首页 > 解决方案 > 当我发送消息时,Azure 服务总线没有任何反应

问题描述

我已经设置了一个 Azure 服务总线和一个使用 Microsoft 的 Azure 服务总线文档作为模板的类。当我尝试运行我的代码时,什么也没有发生。没有消息发送到服务总线。我尝试用不正确的队列名称和连接字符串来破坏它,甚至没有收到错误。我是异步编程的新手,所以也许我没有正确执行我的任务。

    public static async Task SendMessageAsync(string messageToSend)
    {
        // create a sender Bus Client
        ServiceBusClient client = new ServiceBusClient(connectionString);
        
        // create a sender for the queue.
        ServiceBusSender sender = client.CreateSender(queueName);

        // create a message that we can send. 
        ServiceBusMessage message = new ServiceBusMessage(messageToSend);

        // send the message
        await sender.SendMessageAsync(message);
        Console.WriteLine($"Sent a single message to the queue: {queueName}");

        await client.DisposeAsync();            
    }

在这里调用这个方法:

    private void ProcessPerformanceContributionFeed(string[] args, string batchRunId)
    {
        
        var task1 = Task.Run(async() =>  await AzureServiceBusHelper.SendMessageAsync($"Performance Contribution Started at {DateTime.Now.ToString()}"));

任务运行(我认为?)没有任何错误或任何消息被发送到服务总线。

标签: .netazureazureservicebusazure-servicebus-queues

解决方案


我相信你遇到这个问题是因为你没有等待任务完成。

请更改以下代码行:

var task1 = Task.Run(async() =>  await AzureServiceBusHelper.SendMessageAsync($"Performance Contribution Started at {DateTime.Now.ToString()}"));

var task1 = Task.Run(async() =>  await AzureServiceBusHelper.SendMessageAsync($"Performance Contribution Started at {DateTime.Now.ToString()}"));
task1.Wait();

你的问题应该得到解决。

More information on Task.Wait can be found here: https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.task.wait?view=net-5.0.


推荐阅读