3

我将 Masstransit dotnet core v6.3.1 与 RabbitMQ v3 一起使用。我的案例是从 api 网关向其他服务发送请求。服务由主题和网关使用每个请求使用不同的主题。我正在尝试将请求/响应与公共交通一起使用。但是 requestClient 将交换类型声明为扇出。我不能改变类型。我想对每个请求使用不同的 routingKey 和请求/响应。我怎样才能做到这一点?

我在网关中使用过:(startup.cs)

cfg.AddRequestClient<ISimpleRequest>();

(自定义控制器)

await client.GetResponse<ISimpleResponse>(new { Data="test request"});

我在其他服务(启动)中使用过:

cfg.ReceiveEndpoint("TestGateway", ep =>
{
    ep.Consumer(() => new SimpleConsumer(context));
});

(自定义消费者)

await client.RespondAsync<ISimpleResponse>(new { Data="test response"});

我也尝试先在rabbitmq中声明交换。在我使用交换 Uri 从 clientFactory 创建请求之后。但是我遇到了一个错误,例如“ ...收到'扇出'但当前是'主题'。”

4

1 回答 1

1

有一个使用直接交换的示例,主题交换类似但支持通配符语义。我建议查看它以获取有关如何使用 MassTransit 使用 RabbitMQ 配置拓扑的更多详细信息。

样本

还有关于如何使用交换类型设置路由键的文档。

于 2020-05-19T12:51:08.997 回答