MassTransit 消费者不会触发

MassTransit consumer wont trigger

Startup.cs

 static void Main(string[] args)
        {
            var bus = Bus.Factory.CreateUsingAzureServiceBus(h =>
            {
                var host = h.Host(serverAddressURI
                    ,
                    z =>
                    {
                        z.TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider("RootManageSharedAccessKey", key);
                    });

                h.ReceiveEndpoint(host, "orderqueue",
                    ep =>
                    {
                         ep.Consumer<OrderConsumer>(); 
                    });
            });

            bus.Start();
            TaskUtil.Await(() => bus.Publish(new Order {Text = "Hi3"}));        
            bus.Stop();
        }

订单消费者

public class OrderConsumer : IConsumer    
    {
        public async Task Consume(ConsumeContext<Order> context)
        {
            await Console.Out.WriteLineAsync($"Shipping order: {context.Message.Text}");

        }
    }

我正在尝试使用 masstransit 设置一个简单的测试,不确定是什么问题,消息发送到我的队列,我可以在 azure 门户的 Azure 服务总线仪表板上看到它。但是消费者永远不会被触发,我也没有任何错误。有什么想法吗?

可能是因为您的应用程序在消费者有机会完成消费之前就停止了。尝试在发布后立即添加 TaskUtil.Await(() => Task.Delay(2000)),让您的消费者有时间在应用程序退出前消费。

当然,这在实际应用中应该不是问题。

题外话,可以使用异步Main方法来避免TaskUtil.Await()public static async Task Main(string[] args).