Rabbitmq Spring AMQP 1.3.5相关id

Rabbitmq Spring AMQP 1.3.5相关id,rabbitmq,spring-integration,amqp,spring-amqp,Rabbitmq,Spring Integration,Amqp,Spring Amqp,有人知道为什么Spring集成(AMQP 1.3.5)要求相关id为字节数组吗?Rabbit的AMQP客户端3.3.5在AMQP.BasicProperties类中为相关id获取一个字符串。Spring不需要在某个时候将字节数组转换成这个字符串吗?我们发现Rabbit发送的消息中的相关id仍然是一个字节数组,并且从未转换为字符串。有什么见解吗?好问题,我没有见解;那是在我开始这个项目之前,这是第一天的问题 Spring AMQP将字节[]转换为DefaultMessagePropertiesCo

有人知道为什么Spring集成(AMQP 1.3.5)要求相关id为字节数组吗?Rabbit的AMQP客户端3.3.5在AMQP.BasicProperties类中为相关id获取一个字符串。Spring不需要在某个时候将字节数组转换成这个字符串吗?我们发现Rabbit发送的消息中的相关id仍然是一个字节数组,并且从未转换为字符串。有什么见解吗?

好问题,我没有见解;那是在我开始这个项目之前,这是第一天的问题

Spring AMQP将
字节[]
转换为
DefaultMessagePropertiesConverter
(出站)中的字符串;默认情况下,由
rabbitmplate
使用
UTF-8
调用。生成的字符串将添加到
基本属性中

在侦听器容器(入站)端,无条件使用UTF-8

兔子客户端在写入导线时(在
ValueWriter.writeShortStr()
中),无条件地使用字符集
UTF-8
将其转换为
byte[]

因此,除非您更改
rabbitmplate
中的字符集(这将是不好的),否则它是不可操作的(但如果您已经有
字符串
,则不需要)

我只能推测,由于
MessageProperties
是一个抽象(并且与RabbitMQ无关),所以在设计抽象时,其他一些客户机将其作为
byte[]
使用

因为我们只有一个rabbitmq实现,所以我不反对向抽象添加优化以避免不必要的转换

请随意打开,我们将在即将发布的1.5版本中查看它