【发布时间】:2013-07-22 12:08:20
【问题描述】:
我调用了一次client.Send(brokeredMessage);,但我收到了多次消息。对于句柄队列,我使用此代码
private static void HandleQueue(string queueName, MessageHandler messageHandler)
{
// Create the queue if it does not exist already
string connectionString =
Configuration.GetConnectionString("Microsoft.ServiceBus.ConnectionString",false);
var namespaceManager =
NamespaceManager.CreateFromConnectionString(connectionString);
if (!namespaceManager.QueueExists(queueName))
{
namespaceManager.CreateQueue(queueName);
}
QueueClient client =
QueueClient.CreateFromConnectionString(connectionString, queueName);
while (true)
{
BrokeredMessage message = client.Receive();
if (message != null)
{
try
{
messageHandler(message);
// Remove message from queue
message.Complete();
}
catch (Exception)
{
// Indicate a problem, unlock message in queue
message.Abandon();
}
}
}
}
问题是BrokeredMessage message = client.Receive(); 被多次调用并返回相同的消息,如果messageHandler(message); 的执行需要很长时间。我该如何解决?
【问题讨论】:
标签: .net azure azure-servicebus-queues