0
我試圖強制RabbitMQ隊列在Rabbit服務重新啓動時生存,同時迫使它們在服務重新啓動完成後重新使用相同的名稱。MassTransit和RabbitMQ,使隊列在使用DI重新啓動時生存
我們正在利用我們的DI容器傳遞消息的消費者
return new List<Type>
{
typeof(Consumer1), typeof(Consumer2), typeof(Consumer3), typeof(Consumer4)
};
該集合,然後通過
t => _kernel.Get(t));
,然後傳遞到配置註冊他們這樣
cfg.ReceiveEndpoint(host, e =>
{
foreach (var type in consumerTypes)
{
e.Consumer(type, getConsumer);
}
});
這使得在每次重新啓動時都會重新創建隊列,名稱中帶有一個GUID。
如果我們試着這樣做:
cfg.ReceiveEndpoint(host, e =>
{
foreach (var type in consumerTypes)
{
e.Consumer(type, getConsumer);
e.Durable = true;
e.AutoDelete = false;
}
});
那麼隊列是持久的,但在服務重新啓動不創建。
我們如何爲每個消費者指定一個隊列名稱?
隊列的每個端點創建。沒有什麼能阻止你爲每個消費者提供一個端點什麼是你的容器? MassTransit幾乎支持所有存在的容器。 –
正確。我們正在使用Unity,我們想創建一個名爲server1name_MessageType1,server1name_MessageType2,server2name_MessageType1,server2name_MessageType2的隊列,並且使得隊列不會被刪除並允許它們存儲消息,直到它們是消費者爲止。 – MaPi
接收端點隊列,交換和綁定永遠不會被刪除。我假設你明白了我的意思,看你的答案。 –