1

注意:根据我收到的回复,Azure Service Bus 似乎不是这项工作的正确工具。我把这个问题留在这里,以防它对其他人有用。


我想设置一种情况,即我有一个发布消息的应用程序和多个接收消息的应用程序。据我所知,Azure 服务总线主题就是为此而设计的。这个问题的公认答案说的是同样的事情。

我一直在按照快速入门示例生成两个控制台应用程序,一个用于发送消息,一个用于接收消息。当我只有一个接收器应用程序实例正在运行时,这很好用,但如果我启动两个接收器实例,则只有一个实例会收到任何消息。

我尝试CompleteAsync在接收消息的代码中删除对的调用,但这没有任何区别。

我使用的代码与那篇文章中显示的完全一样,所以在这里发布它没有意义。

我确定我只是误解了一些基本的东西,但我认为这个想法是主题和订阅允许您拥有任意数量的接收者。

谁能解释我做错了什么?

4

2 回答 2

2

您需要有不同的订阅客户端来代替不同的接收者。您应该在主题下有两个订阅,以便在两个不同的地方接收它。

这样,您需要为两个订阅创建订阅客户端,在每个接收者应用程序中创建一个。这样您就可以同时在两个应用程序中接收消息。

于 2019-01-22T04:21:35.420 回答
0

横向扩展接收器代表单个逻辑端点。您可以横向扩展以更快地处理消息,而不是确保每个实例都获得一份副本。如果您有这方面的需求,那么您的接收器必须是逻辑上不同的端点,而不是同一个端点。相同的逻辑接收器/端点不应两次​​处理相同的消息。

把它们加起来:

  • 如果您想更快地处理消息,请使用相同的接收器并横向扩展。
  • 如果您需要确保每个接收器都能接收到所有消息,请使用不同的接收器。
于 2019-01-21T23:42:38.917 回答