为了使用masstransit测试请求/响应saga,我创建了一个控制台应用程序,通过在总线(RabbitMQ)上发送消息来启动saga。
根据documentation的说法,控制台应用程序不需要定义任何端点来接收响应。
我使用以下代码创建总线:
context.Bus = Bus.Factory.CreateUsingRabbitMq(x =>
{
IRabbitMqHost host = x.Host(new Uri(ConfigurationManager.AppSettings["RabbitMQHost"]), h =>
{
h.Username("guest");
h.Password("guest");
});
});
当上面的代码运行时,我没有看到创建任何交换或临时队列。
发送请求将导致执行saga,但响应将永远不会返回到原始发送者,并且将抛出超时异常。
发送请求:
public async Task Test(TestContext context)
{
var triggerRequestMessage = JsonConvert.DeserializeObject<TriggerRequestMessage>Messages.MFAMessages.ValidMessage);
var client = CreateRequestClient(context);
var response = await client.Request(triggerRequestMessage);
Logger.Log("Result: PublishMFAMessage");
}
IRequestClient<TriggerRequestMessage, ResponseMessage> CreateRequestClient(TestContext context)
{
var serviceAddress = new Uri("rabbitmq://localhost/MTTest/SAGAS_AUTHBOLTON");
var client = context.Bus.CreateRequestClient<TriggerRequestMessage, ResponseMessage>(serviceAddress, TimeSpan.FromSeconds(10));
return client;
}
我做错了什么?为什么没有创建临时的?
发布于 2016-01-29 21:40:46
上面的代码没有创建任何私有消费者的原因是因为我不想启动总线。啊!!
缺少的代码:
context.Bus.Start();
@travis感谢你的帮助!
https://stackoverflow.com/questions/35032422
复制相似问题