使用 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,老作家),但无法弄清楚如何让新客户端以要求的格式发送数据。

相关链接:

  1. Interop extension to do the opposite (read an old message in the new client)

场景描述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(); 
 }