何时使用 MassTransit IRequestClient 以及何时 IBus.Send

When to use MassTransit IRequestClient and when IBus.Send

我正在使用 MassTransitMediatR 库。

在控制器中我使用调解器发送消息

List<Car> cars = await _mediator.Send(new GetCarDataQuery());

GetCarDataQuery 将在 GetCarDataQueryHandler 中结束,因此它将 return 汽车对象列表。

一切都很好,但是如果我摆脱 MediatR 库,那将等同于发送上述消息。 使用像 _bus.Send(new MyCommand()) 这样的 MassTransit IBus 或使用 IRequestClient?

据我所知,IRequestClient 将是同步调用,而 _bus 将是将消息放入队列的异步调用?由此我想我需要使用 _bus.Send<MyCommand>() 但我不确定如何从消费者那里收到回复?

如果您需要回复,您应该使用IRequestClient<T>

如果您需要 fire-and-forget 消息,请使用 Publish

MassTransit Mediator is documented, and you can watch various YouTube videos.