从Microsoft.Azure.ServiceBus迁移到Azure.Messaging.ServiceBus的GetBody等效实现咨询
在新的Azure.Messaging.ServiceBus库中,ServiceBusReceivedMessage的消息体封装为BinaryData类型,你可以通过以下两种方式实现和旧版SDK等价的反序列化效果:
方式1:完全兼容原有DataContractJsonSerializer逻辑
该方式完全复用你之前的序列化器配置,不会出现序列化规则不兼容的问题,代码示例如下:
using var bodyStream = receivedMessage.Body.ToStream(); var serializer = new DataContractJsonSerializer(typeof(RemoteExecutionContext)); var remoteContext = (RemoteExecutionContext)serializer.ReadObject(bodyStream);
方式2:简化写法(适用于无特殊序列化配置的场景)
如果你的对象没有自定义的DataContract序列化规则,也可以直接调用BinaryData内置的JSON反序列化方法,代码更简洁:
var remoteContext = receivedMessage.Body.ToObjectFromJson<RemoteExecutionContext>();
注意:如果你的消息体不是JSON格式,也可以通过
receivedMessage.Body.ToArray()获取原始字节数组,自行对接对应的序列化逻辑即可。
内容的提问来源于stack exchange,提问作者Shiju Samuel
相关产品推荐
相关产品推荐

