This is an automated email from the ASF dual-hosted git repository.
jinrongtong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-spring.git
The following commit(s) were added to refs/heads/master by this push:
new 7193566 [ISSUE #346] Enhance DefaultRocketMQListenerContainer
doConvertMessage
7193566 is described below
commit 7193566357e1326e29fd781df68ecef887625ab0
Author: wbzj1110 <[email protected]>
AuthorDate: Fri Feb 19 15:30:37 2021 +0800
[ISSUE #346] Enhance DefaultRocketMQListenerContainer doConvertMessage
---
.../support/DefaultRocketMQListenerContainer.java | 2 +-
.../DefaultRocketMQListenerContainerTest.java | 33 +++++++++++++++++++++-
2 files changed, 33 insertions(+), 2 deletions(-)
diff --git
a/rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/support/DefaultRocketMQListenerContainer.java
b/rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/support/DefaultRocketMQListenerContainer.java
index 0b513a3..725e967 100644
---
a/rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/support/DefaultRocketMQListenerContainer.java
+++
b/rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/support/DefaultRocketMQListenerContainer.java
@@ -457,7 +457,7 @@ public class DefaultRocketMQListenerContainer implements
InitializingBean,
@SuppressWarnings("unchecked")
private Object doConvertMessage(MessageExt messageExt) {
- if (Objects.equals(messageType, MessageExt.class)) {
+ if (Objects.equals(messageType, MessageExt.class) ||
Objects.equals(messageType, org.apache.rocketmq.common.message.Message.class)) {
return messageExt;
} else {
String str = new String(messageExt.getBody(),
Charset.forName(charset));
diff --git
a/rocketmq-spring-boot/src/test/java/org/apache/rocketmq/spring/support/DefaultRocketMQListenerContainerTest.java
b/rocketmq-spring-boot/src/test/java/org/apache/rocketmq/spring/support/DefaultRocketMQListenerContainerTest.java
index 7133b98..2e730d0 100644
---
a/rocketmq-spring-boot/src/test/java/org/apache/rocketmq/spring/support/DefaultRocketMQListenerContainerTest.java
+++
b/rocketmq-spring-boot/src/test/java/org/apache/rocketmq/spring/support/DefaultRocketMQListenerContainerTest.java
@@ -19,13 +19,14 @@ package org.apache.rocketmq.spring.support;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
+
+import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.common.message.MessageExt;
import org.apache.rocketmq.remoting.protocol.RemotingSerializable;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.apache.rocketmq.spring.core.RocketMQReplyListener;
import org.junit.Test;
import org.springframework.core.MethodParameter;
-import org.springframework.messaging.Message;
import org.springframework.messaging.converter.CompositeMessageConverter;
import org.springframework.messaging.converter.MappingJackson2MessageConverter;
import org.springframework.messaging.converter.StringMessageConverter;
@@ -52,6 +53,15 @@ public class DefaultRocketMQListenerContainerTest {
Class result = (Class) getMessageType.invoke(listenerContainer);
assertThat(result.getName().equals(String.class.getName()));
+ //support message
+ listenerContainer.setRocketMQListener(new RocketMQListener<Message>() {
+ @Override
+ public void onMessage(Message message) {
+ }
+ });
+ result = (Class) getMessageType.invoke(listenerContainer);
+ assertThat(result.getName().equals(Message.class.getName()));
+
listenerContainer.setRocketMQListener(new
RocketMQListener<MessageExt>() {
@Override
public void onMessage(MessageExt message) {
@@ -60,6 +70,7 @@ public class DefaultRocketMQListenerContainerTest {
result = (Class) getMessageType.invoke(listenerContainer);
assertThat(result.getName().equals(MessageExt.class.getName()));
+
listenerContainer.setRocketMQReplyListener(new
RocketMQReplyListener<MessageExt, String>() {
@Override
public String onMessage(MessageExt message) {
@@ -112,6 +123,26 @@ public class DefaultRocketMQListenerContainerTest {
MessageExt result2 = (MessageExt)
doConvertMessage.invoke(listenerContainer, messageExt);
assertThat(result2).isEqualTo(messageExt);
+ //support message
+ listenerContainer.setRocketMQListener(new RocketMQListener<Message>() {
+ @Override
+ public void onMessage(Message message) {
+ }
+ });
+ Field messageType3 =
DefaultRocketMQListenerContainer.class.getDeclaredField("messageType");
+ messageType3.setAccessible(true);
+ messageType3.set(listenerContainer, Message.class);
+ Message message = new MessageExt(0, System.currentTimeMillis(), null,
System.currentTimeMillis(), null, null);
+ message.setBody("hello".getBytes());
+ Message result3 = (Message) doConvertMessage.invoke(listenerContainer,
message);
+ assertThat(result3).isEqualTo(message);
+
+ listenerContainer.setRocketMQListener(new RocketMQListener<User>() {
+ @Override
+ public void onMessage(User message) {
+ }
+ });
+
listenerContainer.setRocketMQListener(new RocketMQListener<User>() {
@Override
public void onMessage(User message) {