当我测试我为项目创建的发送和接收方法时,我遇到了一个奇怪的问题。 当我使用基于UUID对象的correlationId发送某个消息时,接收方获得此correlationId的略微修改版本(无法反序列化)。
在发送方面,我这样做:
MessageProperties properties = new MessageProperties();
properties.setCorrelationId(MessageSerializer.serialize(UUID.randomUUID().toString()));
在我上次测试中,UUID生成的是:“ d4170243-9e7e-4c42-9168-f9da4debc5bb ”
这将生成以下correlationId(序列化时):
[-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]
当我收到另一方的消息时,这个ID略有改变:
[-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管理插件时,我注意到ID已经在到达队列时发生了变化。
在发送方跟踪我的代码将我带到RabbitTemplate类的send选项。
RabbitTemplate template = new RabbitTemplate(connection);
template.setExchange("amq.direct");
template.setRoutingKey("some.route");
template.send(message);
但我无法弄清楚造成这个问题的原因。我想这只是我错误的方式使用correlationId选项。有人可以帮助我吗?
欣赏它。
答案 0 :(得分:3)
说明如下:
[-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]