apache / apache/rocketmq-spring
当 `onMessage` 要转换的消息类型为 `byte[]` 时,报错:ClassCastException: java.lang.String cannot be cast to [B
- Dominant language
- Java
- Stars
- 2.3k
- Forks
- 943
- PR merge metrics
- No merged PRs in 30d
Description
https://github.com/apache/rocketmq-spring/blob/b3963f76589a5348370ea990c15e3878806e2710/rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/support/DefaultRocketMQListenerContainer.java#L543-L551

我注意到这里当要转换的类型为 `byte[]` 时,会调用`spring-messaging` 的 `ByteArrayMessageConverter` 的 `convertFromInternal`,而这个方法会原样返回 `payload`。而截图的 [`L551` 行](https://github.com/apache/rocketmq-spring/blob/b3963f76589a5348370ea990c15e3878806e2710/rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/support/DefaultRocketMQListenerContainer.java#L543-L551),将 `payload` 设置成了 `str`,导致 `String` 到 `byte[]` 的类型转换异常 `ClassCastException: java.lang.String cannot be cast to [B` 。
```java
org.springframework.messaging.converter.ByteArrayMessageConverter#convertFromInternal
return message.getPayload();
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.