是否可以使用 AMQP.Net Lite 库连接到 Azure 服务总线中的分区主题?

Is it possible to connect to partitioned topic in Azure Service Bus with AMQP.Net Lite library?

我的客户端 .NET Core 应用程序使用 AMQP.Net Lite library 与 Azure 服务总线一起工作。当服务总线命名空间中的主题未分区(Enable Partitioning 变为 OFF)时,一切正常 - 我能够连接并创建 ReceiverLink 对象接收消息。

但是,一旦主题被分区(Enable Partitioning 变为 ON),我在 ReceiverLink 创建对象后立即收到以下错误。 错误描述为:“无法为实体类型订阅者打开主题客户端。

错误代码转换为 AMQP 映射为 amqp:not-allowed。根据the docs,这意味着“对方试图以与规范中定义的语义不一致的方式使用框架。”老实说,我很难理解它在 Azure 服务总线抽象方面的含义,但它听起来令人沮丧并且类似于“不可能”对我来说...

另一方面,the MS docs state AMQP 可用于发送和接收消息:

AMQP is now supported for sending and receiving messages to and from a partitioned entity.

所以,问题是是否完全可以使用 AMQP.NET Lite 库从 Azure 服务总线中的分区主题接收消息?

另一方面,the MS docs state AMQP 可用于发送和接收消息:

AMQP is now supported for sending and receiving messages to and from a partitioned entity

Microsoft 文档中的这篇文章发表于 2020 年 6 月 23 日:

AMQP.Net Lite library 的最后一次更新是 5 个月前,因此现在不太可能提供支持并且尚未添加到开源库中:

您可以在 Github repo

中提出拉取请求或问题以获得支持

显然,这是 Azure 服务总线中的一个错误。但是,有一个解决方法。

而不是像这样创建 ReceiverLink

var r = new ReceiverLink(session, "SubscriptionName", "TopicName");

这样创建:

var r = new ReceiverLink(session, string.Empty, "TopicName/Subscriptions/SubscriptionName");

注意:第二个参数可以是任意字符串。

详情见this Github thread