Asp.net core 如何连接&xE0;大众运输消费者到由不同应用程序创建的交换

Asp.net core 如何连接&xE0;大众运输消费者到由不同应用程序创建的交换,asp.net-core,rabbitmq,masstransit,Asp.net Core,Rabbitmq,Masstransit,我使用Masstransit和RabbitMq在两个web应用程序.net core之间进行通信。 在发布者应用程序中,我向exchange“生产者”发布消息 rabbitConfigurator.Message<TMessage>(x => x.SetEntityName("producer")); rabbitConfigurator.ReceiveEndpoint("consumer-B", x =>

我使用Masstransit和RabbitMq在两个web应用程序.net core之间进行通信。 在发布者应用程序中,我向exchange“生产者”发布消息

rabbitConfigurator.Message<TMessage>(x => x.SetEntityName("producer"));
rabbitConfigurator.ReceiveEndpoint("consumer-B", x =>
                {
                    x.Consumer<TConsumer>(context);
                    x.Bind("producer");
                });
rabbitConfigurator.Message(x=>x.SetEntityName(“生产者”);
在同一个应用程序中,我有一个消费者——一个上述消息的消费者,它工作正常(消费者有一个交换机和一个队列,如rabbit/masstransit推荐的,连接到生产者交换机)

rabbitConfigurator.ReceiveEndpoint(“消费者-A”,x=>
{
x、 消费者(语境);
x、 约束(“生产者”);
});
在第二个应用程序中,我尝试设置另一个与exchange“producer”连接的相同消息类型的consumer-B

rabbitConfigurator.Message<TMessage>(x => x.SetEntityName("producer"));
rabbitConfigurator.ReceiveEndpoint("consumer-B", x =>
                {
                    x.Consumer<TConsumer>(context);
                    x.Bind("producer");
                });
rabbitConfigurator.ReceiveEndpoint(“消费者B”,x=>
{
x、 消费者(语境);
x、 约束(“生产者”);
});
但是,发送给第二个应用程序的消息将被发送到跳过的队列。但从我所看到的情况来看,第二个使用者在RabbitMq中配置正确

我看不出我错过了什么


编辑:在生产应用程序中,我还可以在第二个消费者中成功接收消息。但从另一个web应用程序来看,它不起作用-可能与存在不同的连接/通道有关?

发送到
制作人的
交换的消息应采用MassTransit可以反序列化的格式。如果没有,则需要添加一个支持消息类型的消息反序列化器。如果是
application/json
,则需要将
RawJsonMessageDeserializer
添加到接收端点


如果消息格式正确,请验证接收端点上是否有可以使用该消息类型的使用者。要使用的消息类型(包括命名空间)必须完全匹配。更多详细信息可用。

是的,名称空间不匹配。作为后续问题,如果我的第二个应用程序是用另一种语言编写的,或者没有使用MassTransit,我将如何接收消息-消息的名称空间和名称如何以纯RabbitMq术语显示(它似乎不是路由密钥)?具有详细信息,或者如果您使用RawJson,它将反序列化为您请求的任何类型(T),但您希望在这种情况下有一个单独的接收端点或每种类型,或者您在其上拥有magic。