我在Web角色上有一个WCF,然后是一个工作者角色,用于处理WCF添加到azure队列的消息。
我正在做以下事情:
var queue = queueStorage.GetQueueReference("myqueue");
var message = new CloudQueueMessage(string.Format("{0},{1}", pWord,processed));
queue.AddMessage(message);
然后我想等到消息处理完毕,但我不知道我的队列对象是否会自行更新,或者我必须对此做些什么。
关于我的工作角色,我有以下内容:
这是我的onStart方法:
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
inputQueue = queueClient.GetQueueReference("myqueue");
然后在我的Run方法上:
while (true)
{
try
{
// Retrieve and process a new message from the queue.
msg = inputQueue.GetMessage();
if (msg != null)
{
result = processMessage(msg);
在我的processMessage方法上:
var messageParts = msg.AsString.Split(new char[] { ',' });
var word = messageParts[0];
var processed = Convert.ToBoolean(messageParts[2]);
word = "recibido";
processed = true;
addMessageToQueue2(userId,processed);
return 1;
向队列添加消息:
var queue = outputQueue.GetQueueReference("myQueue");
var message = new CloudQueueMessage(string.Format("{0},{1}", pWord, pProcessed));
queue.AddMessage(message);
我对队列相当新,但我认为这应该有效,所以我只需等待消息处理完毕,但不知道它是如何在内部工作的。
答案 0 :(得分:0)
不太确定在处理邮件之前等待的意思。使用Azure队列,操作非常简单:
所以:长话短说:您可以在规定的超时期限内根据需要处理邮件,然后将其删除。如果您的代码在处理期间崩溃,则该消息最终会重新出现以供其他人阅读。如果你想处理有害消息,只需查看消息的DequeueCount
属性,看看它被读取了多少次(如果超过某个阈值,可以使用消息,就像将它放在一个blob或table行中,以供开发团队今后检查)。
有关所有已记录的队列限制(以及与服务总线队列的详细并排比较),请参阅this article。