簡體   English   中英

為什么在MassTransit中進行簡單配置會創建2個隊列和3個交換?

[英]Why a simple configuration in MassTransit creates 2 queues and 3 exchanges?

我創建了一個MassTransit快速入門程序來與我的本地RabbitMQ進行交互:

namespace ConsoleApp1
{
    public static class Program
    {
        public class YourMessage
        {
            public string Text { get; set; }
        }

        public static async Task Main(params string[] args)
        {
            var bus = Bus.Factory.CreateUsingRabbitMq(sbc =>
            {
                var host = sbc.Host(new Uri("rabbitmq://localhost"), h =>
                {
                    h.Username("guest");
                    h.Password("guest");
                });

                sbc.ReceiveEndpoint(host, "test_queue", ep =>
                {
                    ep.Handler<YourMessage>(async context => await Console.Out.WriteLineAsync($"Received: {context.Message.Text}"));
                });
            });

            await bus.StartAsync(); 
            await bus.Publish(new YourMessage{Text = "Hi"});
            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
            await bus.StopAsync();
        }
    }
}

一切看起來都很好,直到我實際檢查了底層RabbitMQ管理並發現,對於這個非常簡單的程序,MassTransit創建了3個交換和2個隊列。

交流,所有扇出:

  • ConsoleApp1:Program-YourMessage :持久
  • VP0003748_dotnet_bus_6n9oyyfzxhyx9ybobdmpj8qeyt :自動刪除且持久嗎?
  • test_queue :持久

隊列:

  • VP0003748_dotnet_bus_6n9oyyfzxhyx9ybobdmpj8qeyt :x到期60000
  • test_queue :持久

我想知道為什么所有這些都是必需的還是默認配置? 特別是,我不太確定要創建這么多的對象。

所有這些都在文檔中進行了描述

ConsoleApp1:Program-YourMessage是消息合同交換,此處正在發布消息。

test_queue是端點交換。 它綁定到消息交換。 這樣,當您有多個使用者使用相同的消息類型(pub-sub)時,他們都會獲得消息的副本。

test_queue是隊列,綁定到端點交換。 RMQ中的發布-訂閱要求進行交換,並且隊列可以找到要交換的消息,因此可以正確傳遞消息。

不可持久隊列和具有怪異名稱的交換都是端點臨時隊列和交換,它們用於請求響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM