【问题标题】:When does MassTransit route new messages?MassTransit 何时发送新消息?
【发布时间】:2015-07-24 15:01:45
【问题描述】:

更新:有问题的默认队列是我正在研究的 MassTransit 实施的一部分,因此问题没有实际意义。


据我了解 MassTransit,当您发布消息时,消息首先进入发布应用程序的默认队列。

只要为该消息类型注册了消费者,MassTransit 是立即将消息路由到适当的消息队列,还是等到该消费者的工作线程可用?

我想我真正想知道的是:默认队列是瓶颈吗?

我正在使用带有 MSMQ 的 MassTransit 2.7.0。

【问题讨论】:

  • 我投票决定将此问题作为题外话结束,因为它涉及不会引起普遍兴趣的 MassTransit 的专有实施。

标签: message-queue masstransit


【解决方案1】:

首先,您说的是哪个版本的 MassTransit?其次,您使用的是什么交通工具?

如果您使用的是 RabbitMQ,消息会立即发布到交换器。任何绑定到目标交换的队列都将立即收到消息的副本。如果没有排队,消息就会像呼出的一口气一样蒸发到大气中。

创建接收端点后,MassTransit 会将端点队列绑定到与所使用的消息类型匹配的交换。例如,如果MessageA 的消费者连接到接收端点,则会在MyNamespace.MessageA 和为接收端点指定的input_queue 之间创建绑定。还创建了一个与队列同名的中间交换,并且所有绑定都通过该匹配交换。

这使得连接队列变得容易,将传递到队列的每条消息的副本发送到另一个队列以进行审计、诊断等。

如果您使用的是 MSMQ,那就另当别论了,因为 MassTransit 3 不支持 MSMQ(在 MSMQ 上发布并不是一个好故事,尽管它适用于发送/接收)。

【讨论】:

  • 谢谢你,克里斯 - 我已经在上面添加了说明。
  • 我是否充分回答了您的问题? 2.7.0 是古老的,2.10 是最新的。
  • 我很难找出 MSMQ 的答案。由于 MSMQ 与 RabbitMQ 是“不同的故事”,这是否意味着默认队列确实是一个瓶颈?在消费者可用之前,不会从默认队列中读取消息?
  • 我不知道默认队列是什么,.ReceiveFrom() 是总线实例从中接收消息的对象,仅此而已。
  • 我很抱歉,克里斯。默认总线是我正在研究的实现的细节,而不是 MassTransit 本身的一部分。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多