当我使用以下内容时:
var deadLetterPath = SubscriptionClient.FormatDeadLetterPath(topicPath,subName);
var client = SubscriptionClient.CreateFromConnectionString(connectionString, deadLetterPath, subName);
我收到无效操作异常
无法直接在子队列上创建客户端。请在主队列上创建客户端,然后使用该客户端在相应的子队列上创建接收器
azure文档的某些部分要求使用SubscriptionClient.CreateReceiver访问子队列,但该方法并不存在。
6条答案
按热度按时间11dmarpk1#
这种方法对你有用吗?
我还没有在这里(会议上)测试过,但是给予看
干杯
u5i3ibmn2#
使用Azure服务总线的死信队列有一个约定命名:
因此,您可以像访问队列一样访问死信队列。
从@SamVanhoutte回答中,您可以看到ServiceBus框架提供了格式化死信队列名称的方法:
QueueClient.FormatDeadLetterPath(queuePath)
SubscriptionClient.FormatDeadLetterPath(topicPath, subscriptionName)
我编写了两个小方法来创建队列和订阅的消息接收器,您可以在其中设置是否需要交易函队列:
332nm8kg3#
如果您使用的是
Microsoft.Azure.ServiceBus
而不是Microsoft.ServiceBus
,则会略有不同。根据
Microsoft.Azure.ServiceBus
命名空间中的EntityNameHelper
类,对于主题,使用订阅路径而不是your_queue_name。队列的名称或订阅的路径。
2hh7jdfx4#
使用最新的Service Bus客户端库,您可以像这样访问死信队列。请注意,在创建接收方时指定死信队列时,不同语言之间的一致性:
5us2dqdw5#
那些想用python做的人。
从死信队列接收消息:
希望对谁有帮助。
4ioopgfo6#
使用新的Azure.Messaging.ServiceBus SDK为处理器模式编写代码