发送带有新库(Microsoft.Azure.ServiceBus)的消息,该消息由具有BodyType-字符串的旧库(Microsoft.ServiceBus.Messaging)读取

时间:2019-05-08 09:17:59

标签: .net azure azureservicebus servicebus

一段时间以前,我有一个使用旧库编写的客户端,并在接收消息时调用UIApplicationDidReceiveMemoryWarningNotification来读取正文。

现在,我有一个新客户端GetBody<string>()(发送消息),据我所知,它总是使用Microsoft.Azure.ServiceBus

因此,旧客户端只是崩溃,因为它期望字符串体类型。我发现了相反情况下的许多信息(新读者,旧作家),但无法弄清楚如何使新客户端以所需格式发送数据。

相关链接:

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

1 个答案:

答案 0 :(得分:1)

该场景在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(); 
 }