有关于地下ESB轨道交通:没有消费者
我想MassTransit首次,并试图让我的头围绕如何创建队列和消息是如何消费的新手问题。
我有一个Web应用程序和控制台应用程序试图做发布/分别
这是我的初始化代码消耗。
var bus = Bus.Factory.CreateUsingRabbitMq(sbc =>
{
var host = sbc.Host(new Uri(hostName), h =>
{
h.Username(userName);
h.Password(password);
});
});
然后从web应用程序调用以下代码。
using (Bus.Start())
{
var pubr = Bus.Publish<T>(message);
pubr.Wait();
}
这会导致消息在Rabbit MQ中丢失。
如果我在控制台应用程序中添加使用者,我可以使示例工作。
sbc.ReceiveEndpoint(host,
e =>
e.Consumer<LoginEventConsumer>(d => { })
{ }
我的问题是为什么我的消息如果没有消费者会丢失?
它看起来像兔子MQ认为没有队列连接到交易所,因此消息丢失。那是对的吗 ?有没有办法在初始化期间创建队列和交换,而不会混淆具有大量随机命名队列/交换的Rabbit MQ?
看起来像我缺少一些非常基本的东西,我理解MassTransit/Rabbit MQ的工作原理。我认为这是一种非常普遍的情况,即消费者注册发生在发布事件后的较晚时间点,并且消费者在连接后将发送所有已发布的项目。