可以使用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函数(Service Bus队列触发器/ .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
设计理念: 在最新的Microsoft.Azure.ServiceBus中,内置的POCO序列化支持已被删除。原因是“虽然这种隐藏的序列化技术很方便,但应用程序应该对对象序列化进行明确控制,并将它们的对象图转换为流,然后在包含它们到消息中之前,做出相反的操作以获得互操作性结果。”
https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messages-payloads