何时使用 MassTransit IRequestClient 以及何时 IBus.Send
When to use MassTransit IRequestClient and when IBus.Send
我正在使用 MassTransit
和 MediatR
库。
在控制器中我使用调解器发送消息
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.
我正在使用 MassTransit
和 MediatR
库。
在控制器中我使用调解器发送消息
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.