Я пытаюсь создать тесты интеграции черного ящика для некоторых служб, которые я создал с помощью MassTransit. Суть службы состоит в том, что она получает сообщение по каналу MassTransit, обрабатывает сообщение и отправляет сообщение по другому каналу MassTransit (обратите внимание, что это не семантика запроса-ответа, а скорее компонент конвейера):
IBusControl bus = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
var host = cfg.Host(new Uri("rabbitmq://localhost"),
h =>
{
h.Username("guest");
h.Password("guest");
});
cfg.ReceiveEndpoint(host, "Queue1", ep =>
{
ep.Handler<ItemStarted>(context =>
{
ItemFinished item = FinishMessage(context.Message);
context.Publish(item);
});
});
});
bus.Start();
Чтобы проверить это, я думаю, мне нужен синхронный способ получения сообщений с шины. Есть какой-либо способ сделать это:
IBusControl bus = Bus.Factory.CreateUsingRabbitMq(cfg =>
var host = cfg.Host(new Uri("rabbitmq://localhost"),
h =>
{
h.Username("guest");
h.Password("guest");
}));
bus.Start();
bus.Publish(new ItemStarted());
// This is what does not seem to exist
ItemFinished finished = bus.Receive<ItemFinished>(timeout : Timespan.FromSeconds(5));
// Assertions about finished
Есть ли способ получать сообщения напрямую из MassTransit без подключения класса потребителя или лямбда-выражения?