【问题标题】:Get Message metadeta for queue trigger azure webjob获取队列触发 azure webjob 的消息元数据
【发布时间】:2017-09-26 19:41:26
【问题描述】:

我们有下面的 QueueTrigger 代码,我们希望在 ProcessQueueMessage 中有消息元数据(即:dequequecount,lastretrival)。有办法实现吗?

 public static void ProcessQueueMessage([QueueTrigger(AppConstants.AzureBlobQueue)] string message, TextWriter log, ExecutionContext context)
    {
        try
        {
            //Do Something
            log.WriteLine(message);
        }
        catch (Exception ex)
        {
            if(message.DequeueCount == 1)
            {
              //Logic 1 to notify 
            }
             if(message.DequeueCount == 2)
            {
              //Logic 2 to notify 
            } if(message.DequeueCount == 3)
            {
              //Logic 3 to notify 
            } if(message.DequeueCount == 4)
            {
              //Logic 4 to notify 
            } if(message.DequeueCount == 5)
            {
              //Logic 5 to notify 
            }
        }

    }

对于出队计数 == 5,我们有不同的逻辑,我们想将消息移动到数据库,我们可以通过 queue-poison 来实现它,但只是不想为此添加另一个 webjob/function。

【问题讨论】:

    标签: azure azure-functions azure-webjobs azure-webjobssdk


    【解决方案1】:

    当然可以,只需将message 的类型从string 更改为CloudQueueMessage

    public static void ProcessQueueMessage(
        [QueueTrigger(AppConstants.AzureBlobQueue)] CloudQueueMessage message, 
        TextWriter log, ExecutionContext context)
    

    【讨论】:

    • 如果您的消息是原始字符串,那么您必须使用[QueueTrigger(AppConstants.AzureBlobQueue)] string message,但是您会失去获取“Id”或“DequeueCount”等功能。
    • 使用不一定要用string,可以从CloudQueueMessage提取消息
    • 这会抛出一个异常,默认使用 Json.Net 序列化。
    猜你喜欢
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 2023-01-31
    • 2016-02-29
    • 1970-01-01
    相关资源
    最近更新 更多