尝试从死信队列中删除时出现错误请求
Bad request when trying to delete from the dead-letter queue
我正在尝试使用以下代码从死信队列中删除消息:
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
这里有什么问题?
这一行是罪魁祸首:QueueDescription qd = _queueManager.GetQueue(queueID);
因为你无法获得死信队列。您必须获取队列本身,然后使用格式化方法。呸!
我 运行 遇到了同样的问题,试图从死信队列中获取计数。貌似deadletterqueue不允许你直接获取计数,你从普通Queue的MessageCountDetails中获取。
不起作用
NamespaceManager nsmgr = Microsoft.ServiceBus.NamespaceManager
.CreateFromConnectionString(connectionString);
return nsmgr.GetQueue(QueueClient.FormatDeadLetterPath(QueueName))
.MessageCountDetails.DeadLetterMessageCount;
有效
return nsmgr.GetQueue(QueueName).MessageCountDetails.DeadLetterMessageCount;
记得对deadletterqueue进行操作你还需要在queue client中指定正确的p。
QueueClient.CreateFromConnectionString(connectionString,
QueueClient.FormatDeadLetterPath(QueueName));
我正在尝试使用以下代码从死信队列中删除消息:
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
这里有什么问题?
这一行是罪魁祸首:QueueDescription qd = _queueManager.GetQueue(queueID);
因为你无法获得死信队列。您必须获取队列本身,然后使用格式化方法。呸!
我 运行 遇到了同样的问题,试图从死信队列中获取计数。貌似deadletterqueue不允许你直接获取计数,你从普通Queue的MessageCountDetails中获取。
不起作用
NamespaceManager nsmgr = Microsoft.ServiceBus.NamespaceManager
.CreateFromConnectionString(connectionString);
return nsmgr.GetQueue(QueueClient.FormatDeadLetterPath(QueueName))
.MessageCountDetails.DeadLetterMessageCount;
有效
return nsmgr.GetQueue(QueueName).MessageCountDetails.DeadLetterMessageCount;
记得对deadletterqueue进行操作你还需要在queue client中指定正确的p。
QueueClient.CreateFromConnectionString(connectionString,
QueueClient.FormatDeadLetterPath(QueueName));