有關於地下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的工作原理。我認爲這是一種非常普遍的情況,即消費者註冊發生在發佈事件後的較晚時間點,並且消費者在連接後將發送所有已發佈的項目。