在本地使用Azure Service Bus

24

我正在使用Azure Service Bus主题和订阅功能,用于在应用程序中发送控制消息。消息侦听器(订阅者)在工作角色中运行,它们接收并处理请求。总线中的每条消息只能被一个侦听器拾取一次,即使同时有多个侦听器在运行。

使用Service Bus没有问题;但是我们在本地调试/测试应用程序时遇到了一些问题。我们有两个Service Bus,一个用于云端,另一个用于本地调试。现在,如果多人同时调试应用程序,则该消息仅由其中一个系统随机选中。这是预期行为,但在调试时可能会引起麻烦。

有没有办法使用本地仿真器来使用Service Bus?我做了一些研究,但是我找不到可靠的解决方案。有没有办法使我们在隔离环境中调试应用程序?

5个回答

11

谢谢Alex,不确定这是否正是我们正在寻找的东西。但仍会尝试一下。未来是否有类似功能可用的路线图? - Pratik Bhattacharya
说实话,我不知道(更实话一点,我认为不行)。你可以尝试在反馈网站上提高这个问题的要求(“之前已经有人问过”链接),产品组正在监控该网站。 - Alex Belotserkovskiy
geekswithblogs.net不再可用。存档链接:https://web.archive.org/web/20191230115935/http://geekswithblogs.net/hroggero/archive/2015/06/04/what-is-the-service-bus-for-windows-server.aspx - Adrian Dymorz

9
Azure Service Bus是一种具有竞争消费者的代理。如果多个开发人员使用同一命名空间进行调试,将会很棘手(消息锁定持续时间过期,另一个正在调试的开发人员得到了该消息)。我建议为每个开发人员查看一个命名空间。使用MSDN许可证,您可以获得足够的Azure信用来让每个开发人员在“沙盒”命名空间中工作。至于如何使其工作,您可以从配置文件、环境变量等中读取。
关于ASB for Windows Server-目前它的版本是1.1,而Azure SB则是3+。托管版本将始终领先于本地部署版本。值得考虑。

3

我们在调试时为每个开发者使用了不同的主题名称,这样做效果非常好。


我们所做的正是如此。 - Pratik Bhattacharya

3
问题可能需要通过对服务总线实现进行抽象来解决,以便可以将其替换为实际可以在本地(或内存中)运行的内容。我建议不要自己重新发明轮子,而是选择像Masstransit这样的库 https://masstransit-project.com

0

我们在许多开发事项中在路径中使用开发者机器名称。例如,像"TheEventMessageQueue"这样的queueName可以是"TheEventMessageQueue-Machine123",我们使用开发订阅以避免混乱 :)

通过使用机器名称,如果队列失控,很容易看出它属于谁。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接