Можно использовать сериализацию JSON, чтобы разрешить передачу этих объектов / сущностей.
Предположим, что следующий класс - это тип экземпляров объектов, которые будут отправляться / получаться из очереди служебной шины Azure:
public class Customer{ public string Name { get; set; } public string Email { get; set; } }
--- Отправить ---
Найдите ниже пример кода (консольное приложение .NET Core 2.0) для отправки экземпляра объекта клиента:
QueueClient queueClient = new QueueClient(connectionString, queueName);
string messageBody = JsonConvert.SerializeObject(obj);
Message message = new Message(Encoding.UTF8.GetBytes(messageBody))
{
SessionId = sessionId
};
await queueClient.SendAsync(message);
--- получение ---
Найдите ниже пример кода Azure Function (триггер очереди служебной шины / .NET Standard 2.0), чтобы получить сообщение и десериализовать его:
[FunctionName("ServiceBusQueueFunction")]
public static void Run([ServiceBusTrigger("taskqueue", Connection = "ServiceBusConnectionString")] Message message, TraceWriter log)
{
Customer customer = JsonConvert.DeserializeObject<Customer>(Encoding.UTF8.GetString(message.Body));
}
Следующие пакеты NuGet были использованы / протестированы для приведенных выше примеров:
- Microsoft.Azure.ServiceBus (версия 3.0.2).
- Newtonsoft.Json (версия 11.0.2).
Подумайте над чтением: Найдите ниже статью с советами по производительности для JSON.NET: https://www.newtonsoft.com/json/help/html/Performance.htm
Обоснование проекта : Встроенная поддержка сериализации POCO была удалена в последней версии.Microsoft.Azure.ServiceBus.Это объясняется тем, что «хотя эта скрытая магия сериализации удобна, приложения должны четко контролировать сериализацию объектов и превращать свои графы объектов в потоки, прежде чем включать их в сообщение, и делать обратное на стороне получателя. Это дает совместимые результаты».
https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messages-payloads