В настоящее время я использую две разные платформы для выполнения действий по синхронизации.Итак, когда действие происходит на платформе 1 (C # -визуальная студия) , то такое же действие должно происходить на платформе 2 (Java) .Для этого я использую SB (служебная шина Azure) для обмена сообщениями Json между двумя платформами.
Действие 1: платформа 1 ----> Сервисная шина -----> платформа 2.
Работает нормально .Сообщение отправляется и принимается в точности так, как и должно быть.
Действие 2: платформа 2 ----> Сервисная шина ----> платформа 1.
не работает .Сообщение отправляется правильно в SB, но когда оно поднято, свойство content содержит только пустой массив, когда он должен быть массивом байтов (содержащим сообщение).Остальные атрибуты сообщения, такие как contentType, replyTo и т. Д., Установлены правильно, поэтому сообщение получается в порядке.Просто отсутствует содержимое или, другими словами, тело сообщения.
Действие 3: Azure SB / Отправка сообщений -----> Сервисная шина -----> платформа 1.
Работает нормально .Другой вариант - отправить сообщение JSON непосредственно в служебную шину с помощью служебной шины Azure / отправить сообщения и поместить туда сообщение JSON.
Для действий 2 и 3 на служебную шину отправляется одно и то же сообщение (когда я его просматриваю).Один отправляется непосредственно на служебную шину, другой генерируется платформой 2. Я думаю, что фактическое сообщение как-то кажется другим в фоновом режиме, поэтому тело сообщения пусто в действии 2.
Потоки и процессы обрабатываются правильно.
Для настройки получателя:
IMessageReceiver receive r= null;
if (config.isSessionsEnabled()) {
receiver = ClientFactory.acceptSessionFromConnectionStringBuilder(new ConnectionStringBuilder(connString), config.getSessionID(), ReceiveMode.PEEKLOCK);
} else {
receiver = ClientFactory.createMessageReceiverFromConnectionStringBuilder(new ConnectionStringBuilder(connString), ReceiveMode.PEEKLOCK);
}
Для получения сообщения:
try {
message = receiver.receive(Duration.ofSeconds(1)); //message.Content will be empty array
if(message != null){
//process message
}
} catch (Exception e) {
}
}
Правильно ли мое пониманиеили, может быть, есть другое объяснение этому!