如何在队列触发函数中获取队列messageid

时间:2019-07-15 14:57:32

标签: c# azure-webjobs azure-storage-queues queuetrigger

我正在尝试在Azure Web作业的队列中获取当前正在处理的消息的消息ID。找不到任何有关如何获取该文件的适当文档。

public static void ProcessQueueMessage([QueueTrigger("%testingQueue%")] TestingMessageModel testMessage, TextWriter log)
{
   // want to do some logging for this particular triggered message using the messageid. How to get that?
}

添加TestingMessageModel作为参考,它没有任何GUID。我想使用将消息放入队列时天蓝色创建的GUID。

public class TestingMessageModel
{
  public int FromOrg {get; set;}
  public DateTime BatchDate {get; set;}
  public Payments[] payments {get; set;}
}

2 个答案:

答案 0 :(得分:1)

它支持直接绑定id,您可以检查我的代码。

public static void ProcessQueueMessage([QueueTrigger("myqueue")] string message,ILogger logger, string id)
        {
            logger.LogInformation(message);
            logger.LogInformation($"{message}id={id}");
        }

enter image description here

enter image description here

希望这可以为您提供帮助。

答案 1 :(得分:0)

队列触发器提供几个元数据属性(包括消息ID)。

这些属性可以用作其他绑定中绑定表达式的一部分,也可以用作代码中的参数:

enter image description here

请参见 https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue-trigger?tabs=csharp#message-metadata