单个应用程序中的多个不同的 RabbitMQ 连接
Multiple different RabbitMQ connections within single app
我有一个使用 MassTransit 来监听队列的 .net-core 服务。它接受一条消息,完成所有工作,最后它应该使用另一个连接(不同的主机、登录等)发布不同的消息。
我在 MassTransit MultiBus 示例中添加了第二辆公交车 (https://masstransit-project.com/usage/containers/multibus.html)
services.AddMassTransit<ISecondBus>()
但是我不知道如何从我的控制器正确访问这条新总线。我可以在第二辆公共汽车上使用 AddConsumer()
但我不知道如何触发它的 Consume()
方法。据我了解,消费者是等待传入消息的人,但我只需要进行发布而无需任何额外的复杂层。
关于如何正确执行此操作的任何提示?
您需要使用 MultiBus 功能。
它要求您为每个总线实例或非默认总线实例创建一个接口,并分别配置它们。
要从第一个总线上的消费者在第二条总线上发布,您需要添加 ISecondBus
作为对消费者的依赖。然后,您可以使用该总线在第二个总线上发布消息。
public class MyConsumer :
IConsumer<Message>
{
public MyConsumer(ISecondBus secondBus)
{
_secondBus = secondBus;
}
public async Task Consume(ConsumeContext<Message> context)
{
// ...
await _secondBus.Publish(new SomeEvent());
}
}
我有一个使用 MassTransit 来监听队列的 .net-core 服务。它接受一条消息,完成所有工作,最后它应该使用另一个连接(不同的主机、登录等)发布不同的消息。 我在 MassTransit MultiBus 示例中添加了第二辆公交车 (https://masstransit-project.com/usage/containers/multibus.html)
services.AddMassTransit<ISecondBus>()
但是我不知道如何从我的控制器正确访问这条新总线。我可以在第二辆公共汽车上使用 AddConsumer()
但我不知道如何触发它的 Consume()
方法。据我了解,消费者是等待传入消息的人,但我只需要进行发布而无需任何额外的复杂层。
关于如何正确执行此操作的任何提示?
您需要使用 MultiBus 功能。
它要求您为每个总线实例或非默认总线实例创建一个接口,并分别配置它们。
要从第一个总线上的消费者在第二条总线上发布,您需要添加 ISecondBus
作为对消费者的依赖。然后,您可以使用该总线在第二个总线上发布消息。
public class MyConsumer :
IConsumer<Message>
{
public MyConsumer(ISecondBus secondBus)
{
_secondBus = secondBus;
}
public async Task Consume(ConsumeContext<Message> context)
{
// ...
await _secondBus.Publish(new SomeEvent());
}
}