apache / apache/rocketmq-spring

当 `onMessage` 要转换的消息类型为 `byte[]` 时,报错:ClassCastException: java.lang.String cannot be cast to [B

Open
#695 2 comments 0 reactions 0 assignees View on GitHub
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

![image](https://github.com/user-attachments/assets/ee4b23df-39d5-4c79-a970-29e2a69bf910)

我注意到这里当要转换的类型为 `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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.