azure - 来自 Azure Function 的 Azure 队列/主题消息的自定义消息属性

标签 azure azure-functions azure-servicebus-topics

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

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 请求正文进入该函数。这些函数解析每个联系人,添加修改一些属性并将每个联系人提交到队列主题。此外,我从请求 header 和联系人列表中提取其他数据,并且我想在队列主题中使用该数据将请求过滤到不同的订阅中。

编辑:

根据下面 @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);
            }
        }

谢谢

最佳答案

能够设置custom/user properties ,输出收集器应属于 native Azure 服务总线消息类型 BrokeredMessage .

就您而言,您必须更改 ICollector<Contact>ICollector<BrokeredMessage> .

关于azure - 来自 Azure Function 的 Azure 队列/主题消息的自定义消息属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50457428/

相关文章:

azure - VS 2019 更新后运行 azure 函数时出现调试配置文件不存在错误

c# - Azure 服务总线重试选项不起作用 (v5.2.0)

Azure DevOps Pipeline AZ CLI 批量上传不推送文件

node.js - 如何使用绑定(bind)更新 Azure 函数中的 Azure 表行?

azure-functions - 在 Azure 函数上的 HttpTrigger 中立即返回

.net - 如何将 Alexa 与 Azure Functions v4 结合使用

azure - 使用masstransit向azure服务总线主题中的特定订阅者组发送消息

Azure主题订阅过滤器/订阅规则

c# - 如何在 dev .net 6 上的项目中检索环境变量

.net - 如何保护Azure存储/服务总线中的访问 key