【问题标题】:How to get the queue messageid inside the queue trigger function如何在队列触发函数中获取队列messageid
【发布时间】:2019-07-15 14:57:32
【问题描述】:

我正在尝试在 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。我想使用 azure 在将消息放入队列时创建的 GUID。

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

【问题讨论】:

  • log.Log(testMessage.MessageId)?
  • 不,我不想要我创建的 messageid。将消息放入队列后,Azure 会创建一个 messageid,需要访问该消息。

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


【解决方案1】:

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

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

希望这对你有帮助。

【讨论】:

  • 谢谢乔治。这真的很有帮助。很奇怪,微软没有把这个放到文档中,我们必须尝试一下。
  • @Anurag 看到这篇文章并试图做同样的事情。但我的 id 始终为空,我的构造函数看起来就像你上面的那个。您真的需要做的就是添加“字符串 id”参数吗?还是有别的?
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多