0

我正在尝试使用以下代码从死信队列中删除消息:

QueueDescription qd = _queueManager.GetQueue(queueID);
QueueClient qc = _senderFactory.CreateQueueClient(queueID, ReceiveMode.ReceiveAndDelete);

received = qc.ReceiveBatch(deadMessageCount);
while (received != null && received.Count<BrokeredMessage>() > 0)
  received = qc.ReceiveBatch(deadMessageCount); // just in case

并不断获得:

The remote server returned an error: (400) Bad Request. The specified HTTP verb (GET) is not valid. TrackingId:104cc11d-21b5-440c-adde-e9ce9afb0603_G25,TimeStamp:1/24/2015 8:44:10 AM

这里有什么问题?

4

2 回答 2

1

我在尝试从死信队列中获取计数时遇到了同样的问题。看起来死信队列不允许您直接获取计数,您可以从普通队列的 MessageCountDetails 获取它。

不工作

NamespaceManager nsmgr = Microsoft.ServiceBus.NamespaceManager
    .CreateFromConnectionString(connectionString);
return  nsmgr.GetQueue(QueueClient.FormatDeadLetterPath(QueueName))
    .MessageCountDetails.DeadLetterMessageCount;

有用吗

return nsmgr.GetQueue(QueueName).MessageCountDetails.DeadLetterMessageCount;

记住要对死信队列执行操作,您仍然需要在队列客户端中指定正确的 p 它。

QueueClient.CreateFromConnectionString(connectionString,
    QueueClient.FormatDeadLetterPath(QueueName));
于 2017-04-02T15:56:23.900 回答
0

这条线是罪魁祸首:QueueDescription qd = _queueManager.GetQueue(queueID);因为你不能得到一个死信队列。您必须获取队列本身,然后使用 format 方法。呸!

于 2015-01-27T06:46:27.157 回答