我有发布者:
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,接收队列测试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();
}
Consumer(订阅者)处理消息并在控制台上写入消息。这部分一切都还可以。但test123中的消息未得到承认。他们的数量不断增加,他们处于准备状态。他们有些人如何消费但不会消失。
我做错了什么?
我无法理解的另一个问题是,当我删除所有队列时,运行publisher,它只创建test345和test345_error队列。没有test123队列。如果发布者工作了一段时间,test345_error中的消息很少,而test345中没有消息。当我启动使用者时(参见上面的代码),它开始消费消息,看起来没问题。为什么test345队列中没有消息?但不知何故,它们被消耗(处理)?
Masstransit v2.10.0.0,RabbitMQ.Client v3.4.3.0。
提前致谢。
答案 0 :(得分:0)
好的,似乎可以通过将发布者中的两个队列修复为test123来解决。没有错误,没有跳过。