solve the problem that rocketMqListener can not support generic parameter
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 2f39859..ad59bc9 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
@@ -58,7 +58,7 @@
@SuppressWarnings("WeakerAccess")
public class DefaultRocketMQListenerContainer implements InitializingBean,
- RocketMQListenerContainer, SmartLifecycle, ApplicationContextAware {
+ RocketMQListenerContainer, SmartLifecycle, ApplicationContextAware {
private final static Logger log = LoggerFactory.getLogger(DefaultRocketMQListenerContainer.class);
private ApplicationContext applicationContext;
@@ -314,14 +314,14 @@
@Override
public String toString() {
return "DefaultRocketMQListenerContainer{" +
- "consumerGroup='" + consumerGroup + '\'' +
- ", nameServer='" + nameServer + '\'' +
- ", topic='" + topic + '\'' +
- ", consumeMode=" + consumeMode +
- ", selectorType=" + selectorType +
- ", selectorExpression='" + selectorExpression + '\'' +
- ", messageModel=" + messageModel +
- '}';
+ "consumerGroup='" + consumerGroup + '\'' +
+ ", nameServer='" + nameServer + '\'' +
+ ", topic='" + topic + '\'' +
+ ", consumeMode=" + consumeMode +
+ ", selectorType=" + selectorType +
+ ", selectorExpression='" + selectorExpression + '\'' +
+ ", messageModel=" + messageModel +
+ '}';
}
public void setName(String name) {
@@ -387,7 +387,7 @@
// If msgType not string, use objectMapper change it.
try {
if (messageType instanceof Class) {
- //if the messageType is has not Generic Parameter
+ //if the messageType has not Generic Parameter
return this.getMessageConverter().fromMessage(MessageBuilder.withPayload(str).build(), (Class<?>) messageType);
} else {
//if the messageType has Generic Parameter, then use SmartMessageConverter#fromMessage with third parameter "conversionHint".
@@ -459,19 +459,19 @@
Assert.notNull(topic, "Property 'topic' is required");
RPCHook rpcHook = RocketMQUtil.getRPCHookByAkSk(applicationContext.getEnvironment(),
- this.rocketMQMessageListener.accessKey(), this.rocketMQMessageListener.secretKey());
+ this.rocketMQMessageListener.accessKey(), this.rocketMQMessageListener.secretKey());
boolean enableMsgTrace = rocketMQMessageListener.enableMsgTrace();
if (Objects.nonNull(rpcHook)) {
consumer = new DefaultMQPushConsumer(consumerGroup, rpcHook, new AllocateMessageQueueAveragely(),
- enableMsgTrace, this.applicationContext.getEnvironment().
- resolveRequiredPlaceholders(this.rocketMQMessageListener.customizedTraceTopic()));
+ enableMsgTrace, this.applicationContext.getEnvironment().
+ resolveRequiredPlaceholders(this.rocketMQMessageListener.customizedTraceTopic()));
consumer.setVipChannelEnabled(false);
consumer.setInstanceName(RocketMQUtil.getInstanceName(rpcHook, consumerGroup));
} else {
log.debug("Access-key or secret-key not configure in " + this + ".");
consumer = new DefaultMQPushConsumer(consumerGroup, enableMsgTrace,
this.applicationContext.getEnvironment().
- resolveRequiredPlaceholders(this.rocketMQMessageListener.customizedTraceTopic()));
+ resolveRequiredPlaceholders(this.rocketMQMessageListener.customizedTraceTopic()));
}
String customizedNameServer = this.applicationContext.getEnvironment().resolveRequiredPlaceholders(this.rocketMQMessageListener.nameServer());
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 e95698e..60014c9 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
@@ -16,6 +16,8 @@
*/
package org.apache.rocketmq.spring.support;
+import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
import org.apache.rocketmq.common.message.MessageExt;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.junit.Test;
@@ -24,8 +26,6 @@
import org.springframework.messaging.converter.MappingJackson2MessageConverter;
import org.springframework.messaging.converter.StringMessageConverter;
-import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
@@ -75,7 +75,7 @@
ParameterizedType type = (ParameterizedType) getMessageType.invoke(listenerContainer);
assertThat(type.getRawType() == ArrayList.class);
MethodParameter methodParameter = ((MethodParameter) getMethodParameter.invoke(listenerContainer));
- System.out.println(methodParameter);
+ assertThat(methodParameter.getParameterType() == ArrayList.class);
}
}