Я хотел бы иметь возможность добавлять пользовательские свойства в сообщение очереди / темы, поскольку я помещаю его в очередь из функции 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, приведенным ниже, данные добавляются в 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);
}
}
Спасибо