我有一个环境,我只有一个应用服务器.我有一些消息需要一段时间来服务(比如10秒左右),我想通过配置运行代码的消费者应用程序的多个实例来处理这些消息来增加吞吐量.我已经读过"竞争消费者"模式,并认为在使用MassTransit时应该避免这种情况.根据此处的MassTransit文档,每个接收端点应具有唯一的队列名称.我很难理解如何将此建议映射到我的环境. 是否有可能让N个消费者实例运行,每个实例都接收相同的消息,但实际上只有一个实例会对其进行操作? 换句话说,我们可以实现"竞争消费者"模式,但是跨多个队列而不是一个队列?
或者我看错了吗?我是否真的需要查看"发送"方法而不是"发布"?"发送"的缺点是它要求发送者直接了解端点的存在,并且我希望我拥有的消费者/端点的数量是动态的.MassTransit内置了什么可以帮助跟踪有多少消费者实例/队列/端点可以为特定消息类型提供服务?
谢谢,安迪
所以"避免竞争消费者"的指导是从MSMQ作为主要运输时开始的.如果多个线程从队列中读取,MSMQ将会崩溃.
如果您使用的是RabbitMQ,那么竞争对手的消费者就会非常出色.竞争消费者是正确的答案.每个竞争消费将使用来自端点的相同接收.
| 归档时间: |
|
| 查看次数: |
1228 次 |
| 最近记录: |