【问题标题】:Using topic with request/response in masstransit在公共交通中使用带有请求/响应的主题
【发布时间】:2020-05-19 12:31:39
【问题描述】:

我正在使用 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 创建请求之后。但是我有一个错误,比如“...received 'fanout' but current is 'topic'。”

【问题讨论】:

    标签: .net-core rabbitmq exchange-server masstransit request-response


    【解决方案1】:

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

    Sample

    还有documentation 介绍如何使用交换类型设置路由密钥。

    【讨论】:

    • 我再次查看了文档并使用了主题拓扑,例如您的 sample-direct。但我认为这不是我的解决方案,我的问题仍然存在于多线程中。发布消息后,我迫不及待地想收到回复。有什么方法可以在主题拓扑中使用 requestClient 吗?感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多