【问题标题】:Custom Message Properties on Azure Queue/Topic Message from Azure Function来自 Azure 函数的 Azure 队列/主题消息的自定义消息属性
【发布时间】:2018-05-24 21:53:29
【问题描述】:

我希望能够将自定义属性添加到队列/主题消息中,因为我将其放入来自 Azure Function 的队列中。自定义属性用于将消息过滤到不同的主题中。我一定遗漏了一些东西,因为这个工作示例似乎没有任何地方可以放置自定义属性。

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, 
                            TraceWriter log,
                            ICollector<Contact> outputSbMsg)

    {
        var contactList = await req.Content.ReadAsAsync<ContactList>();

        foreach(var contact in contactList.Contacts)
        {
            if (contact.ContactId == -1)
            {
                continue;
            }

            contact.State = contactList.State;

            outputSbMsg.Add(contact);
        }
    }

我正在通过 Azure 门户对函数进行编码。联系人列表通过 http 请求的正文进入函数。这些函数解析出每个联系人,添加修改一些属性并将每个联系人提交到队列主题。此外,我从请求标头和联系人列表中提取其他数据,我想在队列主题中使用这些数据将请求过滤到不同的订阅中。

编辑:

根据@Sean Feldman 下面的建议,在将 BrokeredMessage 添加到输出集合之前,将数据添加到 BrokeredMessage。关键部分是在将联系人对象添加到 BrokeredMessage 之前对其进行序列化。

 public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, 
                                TraceWriter log,
                                ICollector<BrokeredMessage> outputSbMsg)

        {
            var contactList = await req.Content.ReadAsAsync<ContactList>();

            foreach(var contact in contactList.Contacts)
            {
                if (contact.ContactId == -1)
                {
                    continue;
                }

                string jsonData = JsonConvert.SerializeObject(contact);

                BrokeredMessage message = new BrokeredMessage(jsonData);

                message.Properties.Add("State", contactList.State);

                outputSbMsg.Add(message);
            }
        }

谢谢

【问题讨论】:

    标签: azure azure-functions azure-servicebus-topics


    【解决方案1】:

    为了能够设置 custom/user properties,输出收集器应该是原生 Azure 服务总线消息类型,BrokeredMessage

    在您的情况下,您必须将 ICollector&lt;Contact&gt; 更改为 ICollector&lt;BrokeredMessage&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-18
      • 2017-07-22
      • 2018-08-26
      • 2014-06-10
      • 1970-01-01
      • 2016-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多