【发布时间】:2018-03-29 15:14:07
【问题描述】:
我想用 RabbitMq 创建一个队列,在其中我将在一侧发送一些消息并在另一个应用程序中接收。我正在使用以下代码:
return ServiceBusFactory.New(x =>
{
var uriString = string.Format(@"rabbitmq://{0}/{1}/{2}?prefetch={3}", host, virtualHost, queueName,
prefetch < 1 ? 1 : prefetch);
x.UseRabbitMq(r => r.ConfigureHost(new MessageUrn(uriString), h =>
{
h.SetUsername(user);
h.SetPassword(password);
h.SetRequestedHeartbeat(3);
}));
x.ReceiveFrom(uriString);
x.UseJsonSerializer<ServiceBusConfigurator>();
f(x);
});
MessageUrn uri 和 ReceiveFrom 应该具有相同的 uri,否则为 ReceiveFrom 方法指定的 uri 确定总线端点。但这意味着我的发布者也是同一队列的消费者。当没有接收者时,所有消息都进入 queuename_error 队列。当有接收器时,一切似乎都正常。
我做错了什么?我理解为什么消息会进入错误队列——因为发布者没有订阅它们,但同时他是消费者,因此 发生错误情况。当接收器(重新)启动时,是否可以从错误队列中恢复消息?
masstransit 是 2.10.0.0。
提前致谢。
【问题讨论】:
-
我建议您将masstransit 升级到masstransit-project.com/MassTransit
-
我不能使用更高版本。
标签: .net rabbitmq message-queue masstransit