如何在Azure函数中读取Azure队列,而不需要队列触发器



如果我有一个为队列生成数据的Azure函数,这很简单:我只需将其设置为函数的参数:

[Queue("myQueue")] ICollector<MyType> myQueue

是否有类似的方法从队列中读取数据?我能找到的所有关于从Azure函数中读取队列的信息都是关于队列触发器的,这不是我想做的;我想要一个定时器触发的函数,将从队列中批量处理元素。如何获得"队列读取器"?在我的函数中?

我读了你的问题,好像你需要一个定时器触发函数,以获取队列的消息(脱队列)。

所以你需要创建一个定时器触发函数,像这样:
[FunctionName("TimerTriggerCSharp")]
public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)
{
DequeueMessage("nyConnection");
}

然后将您的函数调用到dequeue,从队列中获取像这样的消息文档

public void DequeueMessage(string queueName)
{
// Get the connection string from app settings
string connectionString = ConfigurationManager.AppSettings["StorageConnectionString"];
// Instantiate a QueueClient which will be used to manipulate the queue
QueueClient queueClient = new QueueClient(connectionString, queueName);
if (queueClient.Exists())
{
// Get the next message
QueueMessage[] retrievedMessage = queueClient.ReceiveMessages();
// Process (i.e. print) the message in less than 30 seconds
Console.WriteLine($"Dequeued message: '{retrievedMessage[0].Body}'");
// Delete the message
queueClient.DeleteMessage(retrievedMessage[0].MessageId, retrievedMessage[0].PopReceipt);
}
}

最新更新