MassTransit Consumer没有被调用

时间:2018-04-26 15:49:41

标签: azure azureservicebus masstransit

在下面的示例程序中(使用MassTransit,Azure ServiceBus),我能够将消息发送到队列,但我的接收端点/消费者似乎没有收到消息。我在这做错了什么? (简单发布和此链接中给出的处理程序示例(http://masstransit-project.com/MassTransit/quickstart.html)工作正常!)

    static async Task MainAsync(string[] args)
    {
        var bus = Bus.Factory.CreateUsingAzureServiceBus(cfg =>
        {
            var serviceUri = ServiceBusEnvironment.CreateServiceUri("sb", "{sb}", "{sb-name}");
            var host = cfg.Host(serviceUri, h =>
            {
                h.OperationTimeout = TimeSpan.FromSeconds(5);
                h.TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(
                    "RootManageSharedAccessKey",
                    "{key}");
                h.TransportType = TransportType.NetMessaging;

            });

            cfg.ReceiveEndpoint(host, "test_queue", ep =>
            {
                ep.Consumer<SayHelloCommandConsumer>();
            });
        });


        bus.Start();

        await SendAHello(bus);

        Console.WriteLine("Press any key to exit");
        Console.ReadKey();

        bus.Stop();
    }

    private static async Task SendAHello(IBusControl bus)
    {

        var sendToUri = new Uri("queue-end-point-address");
        var endPoint = await bus.GetSendEndpoint(sendToUri);
        await endPoint.Send<ISayHello>( new
            {
                Message = "Hello there !"
            });
    }
}
public class SayHelloCommandConsumer : IConsumer<ISayHello>
{
    public Task Consume(ConsumeContext<ISayHello> context)
    {
        var command = context.Message;
        return Console.Out.WriteLineAsync($"Recieved a message {command}");
    }
}

public interface ISayHello
{
    string Message { get; set; }
}

}

1 个答案:

答案 0 :(得分:1)

队列地址看起来很可疑,好像你已经纠正了它。