轨道交通。处理程序不承认消息

时间:2017-07-06 10:23:58

标签: .net rabbitmq message-queue masstransit

我有发布者:

 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。

提前致谢。

1 个答案:

答案 0 :(得分:0)

好的,似乎可以通过将发布者中的两个队列修复为test123来解决。没有错误,没有跳过。