Отправьте сообщение с новой библиотекой (Microsoft.Azure.ServiceBus), которая читается старой библиотекой (Microsoft.ServiceBus.Messaging) с BodyType - String - PullRequest
0 голосов
/ 08 мая 2019

У меня есть клиент, написанный некоторое время назад, который использует старую библиотеку и вызывает GetBody<string>() для чтения тела при получении сообщений.

Теперь у меня есть новый клиент Microsoft.Azure.ServiceBus (отправляет сообщения)что, насколько я понимаю, всегда используется Stream.

Так что старый клиент просто падает, так как он ожидает тип тела строки.Я нашел много информации об обратном сценарии (новый читатель, старый писатель), но не могу понять, как заставить нового клиента отправлять данные в требуемом формате.

Ссылки по теме:

  1. Ответ на переполнение стека
  2. Расширение взаимодействия, чтобы сделать обратное (прочитать старое сообщение в новом клиенте)

1 Ответ

1 голос
/ 08 мая 2019

Сценарий описан здесь .Вам нужно будет сериализовать сообщение следующим образом:

 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(); 
 }
...