相关疑难解决方法(0)

公共交通:没有消费者

有一个关于Mass Transit ESB的新手问题

我是第一次尝试使用MassTransit并尝试了解如何创建队列以及如何使用消息.

我有一个Web应用程序和一个Console应用程序试图分别进行发布/使用

这是我的初始化代码.

var bus = Bus.Factory.CreateUsingRabbitMq(sbc =>
            {
                var host = sbc.Host(new Uri(hostName), h =>
                {
                    h.Username(userName);
                    h.Password(password);
                });

           });
Run Code Online (Sandbox Code Playgroud)

然后从Web应用程序我调用以下代码.

 using (Bus.Start())
            {
                var pubr = Bus.Publish<T>(message);

                pubr.Wait();

            }
Run Code Online (Sandbox Code Playgroud)

这导致Rabbit MQ中的消息丢失.

如果我在控制台应用程序中添加一个使用者,我可以让样本工作.

 sbc.ReceiveEndpoint(host, 
                    e =>
                       e.Consumer<LoginEventConsumer>(d => { })
              { }
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果没有消费者,为什么我的信息会丢失?

看起来Rabbit MQ认为没有队列连接到交换机,因此消息丢失.那是对的吗 ?有没有办法在初始化期间一起创建队列和交换,而不会使具有大量随机命名的队列/交换的Rabbit MQ混乱?

在我对MassTransit/Rabbit MQ的工作原理的理解中,我似乎缺少一些非常基础的东西.我认为这是一个非常常见的场景,即消费者注册发生的时间晚于发布事件,并且消费者将被发送一旦连接就已经发布的所有项目.

.net masstransit

2
推荐指数
1
解决办法
1421
查看次数

标签 统计

.net ×1

masstransit ×1