小编chu*_*lee的帖子

如何在ServiceBus上使用sequenceNumber的MessageReceiver.Receive方法

我正在尝试从deadletter队列中重新提交一条消息.

我可以在死信队列上重播一条消息,没关系.问题是我现在想要从deadletter队列中删除它.

这是我想要做的:

var subscription = "mySubscription";
var topic = "myTopic";

var connectionString = "connectionStringOnAzure";
var messagingFactory = MessagingFactory.CreateFromConnectionString(connectionString);

var messageReceiver = messagingFactory.CreateMessageReceiver(SubscriptionClient.FormatDeadLetterPath(topic, subscription), ReceiveMode.ReceiveAndDelete);


long messageSequenceNumber = 835;
var brokeredMessage = messageReceiver.Receive(messageSequenceNumber);  // this part fails

// mark message as complete to remove from the queue
brokeredMessage.Complete();
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

 Microsoft.ServiceBus.Messaging.MessageNotFoundException : Failed to lock one or more specified messages. The message does not exist..TrackingId:ae15edcc-06ac-4d2b-9059-009599cf5c4e_G5_B15,TimeStamp:8/13/2013 1:45:42 PM
Run Code Online (Sandbox Code Playgroud)

但是,不是指定消息序列号而是我只使用如下所示的ReceiveBatch,它没问题.

// this works and does not throw any errors
var brokeredMessages = messageReceiver.ReceiveBatch(10); …
Run Code Online (Sandbox Code Playgroud)

.net c# servicebus azure

5
推荐指数
1
解决办法
4252
查看次数

标签 统计

.net ×1

azure ×1

c# ×1

servicebus ×1