更新:有问题的默认队列是我正在研究的MassTransit实施的一部分,将问题归咎于此。
据我了解MassTransit,当您发布消息时,消息首先会转到发布应用程序的默认队列。
只要消费者注册了该消息类型,MassTransit是否会立即将消息路由到相应的消息队列,还是等到该消费者的工作线程可用?
我想我真正想知道的是:是默认队列的瓶颈吗?
我正在使用带有MSMQ的MassTransit 2.7.0。
答案 0 :(得分:1)
首先,您在谈论什么版本的MassTransit?第二,你使用什么交通工具?
如果您使用的是RabbitMQ,则会立即将消息发布到交易所。绑定到目标交换机的任何队列都将立即收到该消息的副本。如果没有绑定的队列,消息会像呼出气一样蒸发到大气中。
创建接收端点时,MassTransit会将端点队列绑定到与消耗的消息类型匹配的交换。例如,如果MessageA
的使用者连接到接收端点,则会在MyNamespace.MessageA
和为接收端点指定的input_queue
之间创建绑定。还会创建一个与队列同名的中间交换,并且所有绑定都将通过该匹配交换。
这样可以轻松地点击队列,将传递到队列的每条消息的副本发送到另一个队列进行审核,诊断等。
如果您正在使用MSMQ,那么,这是一个不同的故事,而且由于MassTransit 3不支持MSMQ而结束(并且在MSMQ上发布并不是一个好故事,尽管它适用于发送/接收)。