1

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

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

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

另一方面,MS 文档指出 AMQP 可用于发送和接收消息:

现在支持 AMQP 向分区实体发送和接收消息。

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

4

2 回答 2

1

另一方面,MS 文档指出 AMQP 可用于发送和接收消息:

现在支持 AMQP 向分区实体发送和接收消息

微软文档中的这篇文章发表于 2020 年 6 月 23 日: 在此处输入图像描述

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

在此处输入图像描述

您可以在Github 存储库中提出拉取请求或问题以获取支持

于 2020-08-07T03:20:05.077 回答
0

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

而不是创建ReceiverLink这样的:

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

像这样创建它:

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

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

有关详细信息,请参阅此 Github 线程

于 2020-08-13T09:48:41.360 回答