gpt4 book ai didi

c# - MassTransit RabbitMq 发送消息

转载 作者:行者123 更新时间:2023-12-04 11:55:34 25 4
gpt4 key购买 nike

我不知道如何指定 ExchangeQueue在我的 GetSendEndpoint())发送/发布消息时的任务?

根据大众运输文档 https://masstransit-project.com/usage/producers.html#send您可以指定交换和队列

GetSendEndpoint(new Uri("queue:input-queue"))

但是,我只能做一个或另一个?

是否有指定交换和队列的替代发送方式?

我在 Asp.Net Core 中这样做,所以这是我的配置:

Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMassTransit();

services.AddSingleton(p => Bus.Factory.CreateUsingRabbitMq(cfg =>
{
cfg.Host("rabbitmq://localhost", h =>
{
h.Username("admin");
h.Password("admin");
});
}));

services.AddSingleton<IBus>(p => p.GetRequiredService<IBusControl>());
services.AddSingleton<IHostedService, BusService>();
}

这就是发送消息的方式
var endpoint = await _bus.GetSendEndpoint(new Uri(queue:Test.Queue));
await endpoint.Send(new Message()
{
Text = "This is a test message"
});

如您所见,我只能指定队列名称。

最佳答案

如果您指定交易所,则仅在经纪商上声明该交易所。该消息将直接发送到交易所。

"exchange:your-exchange-name"

如果你指定一个队列,队列和一个同名的交换将被声明,交换将被绑定(bind)到队列。消息将被传递到同名的交换,后者将它们传递到队列中。
"queue:your-queue-name"

如果您想要不同的交换和队列名称,可以使用以下命令指定两者:
"exchange:your-exchange-name?bind=true&queue=your-queue-name"

或者你可以简化,但两个队列有点困惑:
"queue:your-exchange-name&queue=your-queue-name"

关于c# - MassTransit RabbitMq 发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60267164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com