首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将消息从一个服务总线复制到另一个服务总线的最佳方法是什么?

将消息从一个服务总线复制到另一个服务总线的最佳方法是什么?
EN

Stack Overflow用户
提问于 2019-05-16 23:12:56
回答 1查看 2.2K关注 0票数 1

让我给你一点背景。我有一个IoT应用程序,它把数据流到一个服务总线上,它在现场环境中有多个订阅者的主题过滤器,一切都很好。现在,我正在尝试创建一个完全独立的测试环境。由于数据正在流进现场,理想情况下,我也希望得到到达此Test环境的所有消息的副本,这样我们就可以为测试团队隔离环境。到目前为止,所提出的解决方案是,在代码中添加第二个服务总线连接,并将消息添加到总线上,即实时总线和测试总线。这需要在应用程序的许多方面进行代码更改,而且很笨重。我正在寻找一种更优雅的方法,在那里我可以复制到达第二总线的消息。第一个总线得到一个副本,第二个总线也得到一个副本。有什么建议会很感激吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-17 04:23:10

截止今天,Azure服务总线不支持跨名称空间转发。如果这是可能的话,您将能够设置一个订阅,自动转发到另一个名称空间。在此之前,您确实需要设置一些定制的东西。

到目前为止,所提出的解决方案是,在代码中添加第二个服务总线连接,并将消息添加到总线上,即实时总线和测试总线。这需要在应用程序的许多方面进行代码更改,而且很笨重。

此外,它还将测试问题引入到您的生产应用程序中,这并不合适。我会尝试的一种方法(注意,还有其他选项也可以使用)是有一个额外的订阅实体,并引入由ServiceBusTrigger触发的Azure函数,将其配置到您将要设置的订阅实体。该函数将能够利用配置为使用测试命名空间的输出绑定。这种办法的好处是:

  1. 您的生产应用程序不必更改。
  2. 您可以完全控制哪些消息被推送到订阅上的测试命名空间vias筛选。
  3. 通过禁用/启用订阅或与函数一起删除订阅,您可以控制消息流到函数中。

您将承担一些额外的功能执行成本。

伪码:

代码语言:javascript
运行
复制
[FunctionName("CloneForTesting")]
[return: ServiceBus(TopicName = "topic", SubscriptionName = "subscription", Connection = "ProductionServiceBusConnection")]
public static string ServiceBusOutput([ServiceBusTrigger(QueueName = "queue", Connection = "TestingServiceBusConnection")] 
Message message, ILogger log)
{
    log.LogInformation($"Cloning message with ID {message.MessageId}");
    return message.Clone();
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56177692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档