【发布时间】:2019-05-09 16:54:03
【问题描述】:
我创建了一个 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-expire 60000 -
test_queue: 耐用
我想知道为什么所有这些都是必要的或者是默认配置?特别是,我不太确定要创建这么多“很多”。
【问题讨论】:
-
您使用哪个版本的 MassTransit?此问题可在 5.5.6 版中重现,但 6.0.0 版不会创建未使用的自动删除交换和队列。至于现在,修复后找不到提交(github.com/MassTransit/MassTransit/releases/tag/v6.0.0)
-
@PylypLebediev 我相信当时它是 5.5.5 版。
标签: c# .net-core rabbitmq masstransit