【发布时间】:2017-12-10 07:21:22
【问题描述】:
我有发布者:
static void Main()
{
var bus = ServiceBusFactory.New(sbc =>
{
sbc.UseRabbitMq(r => r.ConfigureHost(new MessageUrn("rabbitmq://localhost/test123"), c => { }));
sbc.UseJsonSerializer();
sbc.EnableMessageTracing();
sbc.ReceiveFrom(new MessageUrn("rabbitmq://localhost/test345"));
});
bus.WriteIntrospectionToConsole();
Console.WriteLine("bus endpoint {0}", bus.Endpoint.Address);
while(true)
{
Thread.Sleep(1000);
var msg = new TestMessage {Text = DateTime.Now.ToString()};
Console.WriteLine("Publishing {0}", msg);
bus.Publish(msg);
}
}
发布队列 test123,接收队列 test 345。
当我使用以下代码启动消费者时:
static void Main()
{
var bus = ServiceBusFactory.New(sbc =>
{
sbc.UseRabbitMq();
sbc.UseJsonSerializer();
sbc.EnableMessageTracing();
sbc.ReceiveFrom("rabbitmq://localhost/test345");
sbc.Subscribe(subs => { subs.Handler<TestMessage>(msg => { Console.WriteLine(msg.Text); }); });
});
bus.WriteIntrospectionToConsole();
Console.ReadLine();
}
消费者(订阅者)处理消息并将它们写入控制台。这部分一切正常。但是test123中的消息没有被确认。它们的数量不断增加,它们处于就绪状态。它们有些被消耗但不会消失。
我做错了什么?
另一个我无法理解的问题是,当我删除所有队列,运行发布者时,它只创建 test345 和 test345_error 队列。没有 test123 队列。如果发布者工作了一段时间,test345_error 中的消息很少,而 test345 中没有消息。当我启动消费者(见上面的代码)时,它开始消费消息,看起来没问题。为什么 test345 队列中没有消息?但不知何故,它们被消耗(处理)了?
Masstransit v2.10.0.0,RabbitMQ.Client v3.4.3.0。
提前致谢。
【问题讨论】:
-
你的两个程序应该有不同的 ReceveFrom() 地址。
标签: .net rabbitmq message-queue masstransit