在本地应用程序中使用Azure服务总线

在本地应用程序中使用Azure服务总线,azure,azureservicebus,azure-servicebus-topics,brokeredmessage,Azure,Azureservicebus,Azure Servicebus Topics,Brokeredmessage,我正在使用Azure服务总线主题和订阅。它用于在整个应用程序中发送控制消息。消息侦听器(订阅者)以工作角色运行,它们接收消息并处理请求。总线中的每条消息只能拾取一次,即使有多个侦听器同时运行 使用服务总线没有问题;然而,在本地调试/测试应用程序时,我们面临一些问题。我们有两个服务总线,一个用于云,一个用于本地调试。现在,如果多人同时调试应用程序,则消息只由系统中的一个(随机)拾取。这是预期的行为,但在调试时会造成麻烦 有什么方法可以使用服务总线的本地模拟器吗?我做了一些研究,但找不到任何可靠的解

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

使用服务总线没有问题;然而,在本地调试/测试应用程序时,我们面临一些问题。我们有两个服务总线,一个用于云,一个用于本地调试。现在,如果多人同时调试应用程序,则消息只由系统中的一个(随机)拾取。这是预期的行为,但在调试时会造成麻烦


有什么方法可以使用服务总线的本地模拟器吗?我做了一些研究,但找不到任何可靠的解决办法。有没有办法单独调试应用程序?

不幸的是,没有Azure SB本地仿真器,您可以尝试使用它,但它在功能支持等方面略落后于云服务。例如,它仍然支持Azure SDK

Azure Service Bus是一个具有竞争消费者的代理。让多个开发人员使用同一名称空间进行调试将非常困难(消息锁定持续时间已过期,而另一个碰巧正在调试的开发人员获得了该消息)。 我建议每个开发人员查看一个名称空间。有了MSDN许可证,您就可以获得足够的Azure积分,让每个开发人员在“沙盒”名称空间中工作。至于如何让它工作,您可以从配置文件、环境变量等中读取


在ASB for Windows服务器上-目前它在1.1版上,Azure SB在3+上。托管版本将始终领先于本地版本。这个问题应该通过抽象服务总线实现来解决,以便它可以被交换到实际上可以在本地(或者在内存中)运行的东西。不过我建议不要重新发明这个轮子,而是选择一个像Masstransit这样的库。

在调试过程中,我们为每个开发人员使用了不同的主题名,这非常好。

我们在很多开发工作中都使用了devOpers机器名。例如,像“TheEventMessageQueue”这样的队列名称可以是“TheEventMessageQueue-Machine123”,我们使用开发人员订阅,这样就不会弄乱:)


通过使用机器名称,如果机器失控,很容易判断它属于谁

谢谢Alex,不确定这是否正是我们要找的东西。我还是会试试看。有没有未来的路线图可以提供这样的功能?老实说,我不知道(老实说,我想没有)。你可能想尝试在反馈网站(“之前被问过的问题”链接)上添加这个问题-产品小组正在监控该网站。我们正是这么做的