Azure 上的自定义消息属性 Queue/Topic 来自 Azure 函数的消息
Custom Message Properties on Azure Queue/Topic Message from Azure Function
我希望能够将自定义属性添加到 queue/topic 消息中,因为我将它放在 queue 来自 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 请求的 body 进入函数。这些函数解析出每个联系人,添加修改一些属性并将每个联系人提交到 queue 主题。此外,我从请求 headers 和联系人列表中提取其他数据,我想在 queue 主题中使用该数据将请求过滤到不同的订阅中。
编辑:
按照@Sean Feldman 下面的建议,在将 BrokeredMessage 添加到输出 collection 之前,先将数据添加到 BrokeredMessage。关键部分是在将联系人添加到 BrokeredMessage 之前序列化联系人 object。
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, the output collector should be of a native Azure Service Bus message type, BrokeredMessage
。
对于您的情况,您必须将 ICollector<Contact>
更改为 ICollector<BrokeredMessage>
。
我希望能够将自定义属性添加到 queue/topic 消息中,因为我将它放在 queue 来自 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 请求的 body 进入函数。这些函数解析出每个联系人,添加修改一些属性并将每个联系人提交到 queue 主题。此外,我从请求 headers 和联系人列表中提取其他数据,我想在 queue 主题中使用该数据将请求过滤到不同的订阅中。
编辑:
按照@Sean Feldman 下面的建议,在将 BrokeredMessage 添加到输出 collection 之前,先将数据添加到 BrokeredMessage。关键部分是在将联系人添加到 BrokeredMessage 之前序列化联系人 object。
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, the output collector should be of a native Azure Service Bus message type, BrokeredMessage
。
对于您的情况,您必须将 ICollector<Contact>
更改为 ICollector<BrokeredMessage>
。