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) {

Reply via email to