MassTransit:我们如何配置多总线均为Rabbit mq

问题描述

我有一个要求,我需要从一个兔子mq中读取消息并将其发布到另一个。 我尝试配置这两个主机,但是当我发布它时,它仅发布到第一个配置的兔子mq。

我运行了多总线,但现在我陷入了健康检查之中

公交车都在IBus下返回状态

{ “状态”:“不健康”, “结果”:{ “ IBus”:{ “状态”:“健康”, “ description”:“就绪”, “数据”:{ “端点”:{ ““ rabbitmq://:// localhost:5672 / XXXXX_Sxxxxxxx_bus_39pyyy81rrcpzwhibdcedd8sno?temporary = true”:{ “消息”:“就绪(未开始)” }, ““ rabbitmq://:// localhost:5673 / XXXXX_Sxxxxxxx_bus_39pyyy81rrcpzwhibdcedd8sno?temporary = true”:{ “消息”:“就绪(未开始)” }, “ rabbitmq://:// localhost:5673 / xxxxxConsumer”:{ “消息”:“就绪” }, “ rabbitmq://:// localhost:5672 / xxxxxx--xxxxxConsumer”:{ “消息”:“就绪” } } } }, “ IRabbitMqBusB”:{ “状态”:“不健康”, “ description”:“未准备好:尚未开始”, “数据”:{ “端点”:{} } } } }

解决方法

它称为MultiBus,并在documentation中进行了详细描述。

此外,它不会“发布到第一个配置的总线”。仅当您使用DI容器并使用解析的IPublishEndpointProvider时,它才这样做。由于它是通过Try注册为单例的,因此您不会注册第二个实例。

如果您不使用DI容器,而是使用总线实例,则可以做任何您想做的事情。 MultiBus功能使您可以使用在容器中注册的多个总线实例。