我的客户。NET核心应用程序使用AMQP。Net Lite库与Azure Service Bus配合使用。当service bus命名空间中的主题未分区时(禁用启用分区),一切正常-我能够连接并创建ReceiverLink对象来接收消息。
但是,一旦主题被分区(启用分区
打开),我在ReceiverLink
对象创建后立即收到以下错误。错误描述是:“无法为实体类型订阅者打开主题客户端。”
错误代码转换为AMQP映射为AMQP:不允许。根据文档,这意味着“对等方试图以与规范中定义的语义不一致的方式使用框架”老实说,我很难理解Azure服务总线抽象意味着什么,但对我来说,这听起来令人沮丧,类似于“不可能”。。。
另一方面,MS文档说明AMQP可用于发送和接收消息:
AMQP现在支持向分区实体发送消息和从分区实体接收消息。
因此,问题是是否可以使用AMQP. NET Lite库从Azure服务总线中的分区主题接收消息?
显然,这是Azure服务总线中的一个错误。但是,有一个解决方法。
而不是像这样创建ReceiverLink:
var r = new ReceiverLink(session, "SubscriptionName", "TopicName");
像这样创建它:
var r = new ReceiverLink(session, string.Empty, "TopicName/Subscriptions/SubscriptionName");
注意:第二个参数可以是任何字符串。
有关详细信息,请参阅此Github线程。
另一方面,MS文档说明AMQP可用于发送和接收消息:
现在支持AMQP向分区实体发送和接收消息
但是AMQP. Net Lite库的最后一次更新是在5个月前,所以现在不太可能存在支持并且尚未添加到开源库中:
您可以在Github repo中提出拉取请求或发出支持问题
我需要将一条消息从运行在SQL Server2014下的SSIS包放入Azure ServiceBus队列中。正如本文所建议的:从ssis连接到azure服务总线队列,我编写了一个引用“azure SDK2.9”的脚本任务。这种方法适用于Azure存储帐户处理Blob(引用Microsoft.WindowsAzure.Storage程序集),但不适用于Azure存储总线(引用Microsoft.S
参考https://github.com/Azure/azure-service-bus/tree/master/samples/dotnet/gettingstart/microsoft.Azure.servicebus/basicsendreceiveusingtopicsubscriptionclient,我了解Azure服务总线主题的一般工作方式,我的问题更多地是关于它实际上是如何工作的。
null 输出 谁能解释一下为什么会这样吗?这对我来说有点迷惑?
我想将一个小的JSON消息放入中。消息将具有附加到它的“ProviderID”属性,并且根据筛选规则,该消息将被筛选到特定于提供程序的上 但是,我似乎无法在上指定共享访问策略,以限制第三方提供商仅连接到他们自己的 我假设应该在订阅上设置以便将这些消息发送到另一个并在那里应用特定于提供程序的安全性,这样做是否正确。 或者有其他/更好的/推荐的方法来做这件事。
我使用AMQP连接Azure服务总线与java qpid客户端以及Spring JMS。 我将服务总线扩展到了高级层,因为主题在默认情况下是分区的,不能从门户或Azure服务总线管理库进行修改,我在SimpleMessageListenerContainer的开头遇到了以下问题。 javax。jms。JMSException:无法为实体类型订阅服务器打开主题客户端。TrackingId:74bcb
另一个用户'sJohnston'问了一个与我的问题相关的问题: 在进行了您建议的更改后,我得到了以下错误: 连接到Azure服务总线:log4j:warn找不到记录器(com.microsoft.windowsazure.services.servicebus.ServiceBusContract)的追加器。log4j:警告请正确初始化log4j系统。log4j:警告有关详细信息,请参阅http: