使用 BodyType - 字符串的旧库 (Microsoft.ServiceBus.Messaging) 读取的新库 (Microsoft.Azure.ServiceBus) 发送消息
Send a message with a new library (Microsoft.Azure.ServiceBus) that is read by an old library (Microsoft.ServiceBus.Messaging) with BodyType - String
我有一个前段时间写的客户端,它使用旧库并在接收消息时调用 GetBody<string>()
读取正文。
现在我有了新客户端 Microsoft.Azure.ServiceBus
(发送消息),据我所知总是使用 Stream
。
因此,旧客户端只是在预期字符串正文类型时崩溃。我找到了很多关于相反场景的信息(新reader,老作家),但无法弄清楚如何让新客户端以要求的格式发送数据。
相关链接:
场景描述here。
您将需要按照以下方法序列化消息:
var serializer = DataContractBinarySerializer<string>.Instance;
using (MemoryStream stream = new MemoryStream())
{
serializer.WriteObject(stream, some_string);
var msg = new Message(stream.ToArray());
var client = new Microsoft.Azure.ServiceBus.QueueClient(ConnectionString, Queue);
await client.SendAsync(msg);
await client.CloseAsync();
}
我有一个前段时间写的客户端,它使用旧库并在接收消息时调用 GetBody<string>()
读取正文。
现在我有了新客户端 Microsoft.Azure.ServiceBus
(发送消息),据我所知总是使用 Stream
。
因此,旧客户端只是在预期字符串正文类型时崩溃。我找到了很多关于相反场景的信息(新reader,老作家),但无法弄清楚如何让新客户端以要求的格式发送数据。
相关链接:
场景描述here。 您将需要按照以下方法序列化消息:
var serializer = DataContractBinarySerializer<string>.Instance;
using (MemoryStream stream = new MemoryStream())
{
serializer.WriteObject(stream, some_string);
var msg = new Message(stream.ToArray());
var client = new Microsoft.Azure.ServiceBus.QueueClient(ConnectionString, Queue);
await client.SendAsync(msg);
await client.CloseAsync();
}