【问题标题】:Azure Service Bus and Xamarin.Android MessageHandlerAzure 服务总线和 Xamarin.Android MessageHandler
【发布时间】:2021-04-19 15:38:28
【问题描述】:

我正在尝试在 Xamarin.Android 移动应用程序上使用 Microsoft.Azure.ServiceBus。我想将设备订阅到特定队列,并让它持续监控该队列中的任何消息。

我能够找到一篇文章来向队列发送消息,但我很难找到订阅队列的方法。使用以下代码似乎不起作用。

QueueClient queueClient = new QueueClient(connectionString, requestQueueName);

        var messageHandlerOptions = new MessageHandlerOptions(ExceptionReceivedHandler)
        {
            MaxConcurrentCalls = 1,
            AutoComplete = false
        };

        queueClient.RegisterMessageHandler(ProcessMessageAsync, messageHandlerOptions);

还有其他人遇到过类似的问题吗?

感谢 Jlimited

【问题讨论】:

  • 对于发布和订阅,您可以查看 MS 文档。 docs.microsoft.com/en-us/azure/service-bus-messaging/…
  • Wendy,我已经使用这篇文章将控制台应用程序和网站连接到服务总线。它运作良好。我遇到的问题是尝试将 Xamarin.android 设备连接到服务总线。

标签: xamarin.android azureservicebus


【解决方案1】:

您可能想尝试将TransportType 设置为AmqpWebSockets。使用默认 TCP 传输时,Android 有时会出现问题。由于您没有注册错误处理程序,因此您不会观察到连接失败的任何异常。

将其集成到您当前的 sn-p 中的最简单方法是使用 ServiceBusConnectionStringBuilder

var builder = new ServiceBusConnectionStringBuilder(connectionString);
builder.TransportType = TransportType.AmqpWebSockets;

var queueClient = new QueueClient(builder.ToString(), requestQueueName);

如果这是新的开发,没有对旧服务总线库的现有投资,您可能需要考虑使用当前一代,Azure.Messaging.ServiceBusServiceBusProcessor 提供了您正在使用的基于推送的模型,支持指定消息处理选项并注册错误处理程序,而旧版客户端不支持。

【讨论】:

    猜你喜欢
    • 2014-10-20
    • 2017-01-13
    • 1970-01-01
    • 2014-03-29
    • 2018-11-18
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多