2016-08-03 105 views
2

我有一个环境,我只有一个应用程序服务器。我有一些需要一段时间服务的消息(比如10秒左右),我想通过配置消费者应用程序运行代码的多个实例来处理这些消息来提高吞吐量。我已阅读了“竞争消费者”模式,并认为使用MassTransit时应避免这种情况。根据MassTransit文档here,每个接收端点应具有唯一的队列名称。我正在努力了解如何将此建议映射到我的环境。 是否有可能运行N个消费者实例,每个消费者都收到相同的消息,但实际上只有一个实例会对其执行操作?换句话说,我们是否可以实施“竞争消费者”模式,但跨越多个队列而不是一个队列?MassTransit多个消费者

或者我看着这个错误?我真的需要查看“发送”方法而不是“发布”吗? “发送”的缺点是它要求发件人直接了解端点的存在,并且希望与我拥有的消费者/端点的数量保持一致。 MassTransit中是否有内置的功能可以帮助跟踪有多少消费者实例/队列/终端可以服务特定的消息类型?

感谢, 安迪

回答

4

因此,“避免竞争性消费者”的指导是从当MSMQ是主要的交通工具。如果有多个线程从队列中读取,则MSMQ会发生故障。

如果您使用的是RabbitMQ,那么竞争消费者就会出色地工作。竞争的消费者是正确的答案。每个竞争消费将使用来自端点的相同接收。

相关问题