Azure 队列上的自定义消息属性/来自 Azure 函数的主题消息



我希望能够将自定义属性添加到队列/主题消息中,因为它来自和 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 请求的正文进入函数。 这些函数分析出每个联系人,添加修改一些属性并将每个联系人提交到队列主题。 此外,我从请求标头和联系人列表中提取其他数据,并希望在队列主题中使用该数据将请求筛选到不同的订阅中。

编辑:

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

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 服务总线消息类型,BrokeredMessage

在您的情况下,您必须将ICollector<Contact>更改为ICollector<BrokeredMessage>.

最新更新