Use*_*ist 10 c# azure azureservicebus azure-webjobs .net-core
我正在使用应用程序(.Net Core)通过Azure服务总线发送对象并通过Web作业(.Net Core)接收
问题是如何serialize/deserialize
来send/receive
的对象?
我找到了很多关于遗留BroakerMessage.GetBody()
接收消息的参考,但不是新的.Net Core方法,请建议,谢谢.
发件人代码:
using Microsoft.Azure.ServiceBus;
MyClass object = new MyClass();
var message = new Message(object);
await queueClient.SendAsync(message);
Run Code Online (Sandbox Code Playgroud)
接收者代码:
using Microsoft.Azure.ServiceBus;
public void ProcessQueueMessage([ServiceBusTrigger("queue")] Message message, TextWriter log)
{
}
Run Code Online (Sandbox Code Playgroud)
Eva*_*ula 15
可以使用JSON序列化来传输这些对象/实体.
假设以下类是将从Azure Service Bus队列发送/接收的对象实例的类型:
public class Customer{ public string Name { get; set; } public string Email { get; set; } }
Run Code Online (Sandbox Code Playgroud)
---发送---
在下面找到一个示例代码(.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);
Run Code Online (Sandbox Code Playgroud)
---收到---
在下面找到Azure功能(服务总线队列触发器/ .NET标准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));
}
Run Code Online (Sandbox Code Playgroud)
以下样本使用/测试了以下NuGet包:
考虑阅读:在下面找到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
归档时间: |
|
查看次数: |
7264 次 |
最近记录: |