Пока я тестировал методы отправки и получения, которые я создал для своего проекта, я столкнулся с какой-то странной проблемой. Когда я отправляю определенное сообщение с использованием корреляционной информации, основанной на объекте UUID, принимающая сторона получает слегка измененную версию этой корреляции (которая не может быть десериализована).
На стороне отправки я делаю это:
MessageProperties properties = new MessageProperties();
properties.setCorrelationId(MessageSerializer.serialize(UUID.randomUUID().toString()));
В моем последнем тесте UUID был создан: " d4170243-9e7e-4c42-9168-f9da4debc5bb "
Это генерирует следующую корреляциюId (при сериализации):
[-84, -19, 0, 5, 116, 0, 36, 100, 52, 49, 55, 48, 50, 52, 51, 45, 57, 101, 55, 101, 45, 52, 99, 52, 50, 45, 57, 49, 54, 56, 45, 102, 57, 100, 97, 52, 100, 101, 98, 99, 53, 98, 98]
Когда я получаю сообщение с другой стороны, этот идентификатор слегка изменен:
[-17, -65, -67, -17, -65, -67, 0, 5, 116, 0, 36, 100, 52, 49, 55, 48, 50, 52, 51, 45, 57, 101, 55, 101, 45, 52, 99, 52, 50, 45, 57, 49, 54, 56, 45, 102, 57, 100, 97, 52, 100, 101, 98, 99, 53, 98, 98]
При использовании плагина управления RabbitMQ я заметил, что идентификатор уже изменился по прибытии в очередь.
Отслеживание моего кода на отправляющей стороне приводит меня к опции отправки класса RabbitTemplate.
RabbitTemplate template = new RabbitTemplate(connection);
template.setExchange("amq.direct");
template.setRoutingKey("some.route");
template.send(message);
Но я не могу понять, что вызывает эту проблему. Я предполагаю, что только я использую параметр relativeId неправильным способом. Может ли кто-нибудь помочь мне?
Ценить это.
Объяснение следующее:
[-17, -65, -67, -17, -65, -67, 0, 5, 116, 0, 36,...]
))new String(yourArray, "UTF-8")
.Вы можете получить тот же результат с помощью следующего кода:
new String(MessageSerializer.serialize(UUID.randomUUID().toString()) , "UTF-8").getByte("UTF-8")
Который вернется:
[-17, -65, -67, -17, -65, -67, 0, 5, 116, 0, 36, 100, 52, 49, 55, 48, 50, 52, 51, 45, 57, 101, 55, 101, 45, 52, 99, 52, 50, 45, 57, 49, 54, 56, 45, 102, 57, 100, 97, 52, 100, 101, 98, 99, 53, 98, 98]
MessageSerializer
? Созданный байтовый массив не является строго представлением байтового массива в String # getByte ()