This is an automated email from the ASF dual-hosted git repository.
dinglei 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 e10cc5e [ISSUE #81]Fix RocketMQTemplate.syncSend collection type
method signature (#150)
e10cc5e is described below
commit e10cc5e68ff42cb5693655186734677d8df0d7cd
Author: Martin <[email protected]>
AuthorDate: Thu Oct 31 16:45:41 2019 +0800
[ISSUE #81]Fix RocketMQTemplate.syncSend collection type method signature
(#150)
* fix RocketMQTemplate.syncSend collection type method signature
* add a custom batch message send test code;
* change batch message send unit test code
---
.../rocketmq/spring/core/RocketMQTemplate.java | 4 +--
.../rocketmq/spring/support/RocketMQUtil.java | 2 +-
.../RocketMQAutoConfigurationTest.java | 29 +++++++++++++++++++++-
3 files changed, 31 insertions(+), 4 deletions(-)
diff --git
a/rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/core/RocketMQTemplate.java
b/rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/core/RocketMQTemplate.java
index e70d304..528615d 100644
---
a/rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/core/RocketMQTemplate.java
+++
b/rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/core/RocketMQTemplate.java
@@ -134,7 +134,7 @@ public class RocketMQTemplate extends
AbstractMessageSendingTemplate<String> imp
* @param timeout send timeout with millis
* @return {@link SendResult}
*/
- public SendResult syncSend(String destination, Collection<Message<?>>
messages, long timeout) {
+ public <T extends Message> SendResult syncSend(String destination,
Collection<T> messages, long timeout) {
if (Objects.isNull(messages) || messages.size() == 0) {
log.error("syncSend with batch failed. destination:{}, messages is
empty ", destination);
throw new IllegalArgumentException("`messages` can not be empty");
@@ -144,7 +144,7 @@ public class RocketMQTemplate extends
AbstractMessageSendingTemplate<String> imp
long now = System.currentTimeMillis();
Collection<org.apache.rocketmq.common.message.Message> rmqMsgs =
new ArrayList<>();
org.apache.rocketmq.common.message.Message rocketMsg;
- for (Message<?> msg:messages) {
+ for (Message msg:messages) {
if (Objects.isNull(msg) || Objects.isNull(msg.getPayload())) {
log.warn("Found a message empty in the batch, skip it");
continue;
diff --git
a/rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/support/RocketMQUtil.java
b/rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/support/RocketMQUtil.java
index d10cb1b..f4deb45 100644
---
a/rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/support/RocketMQUtil.java
+++
b/rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/support/RocketMQUtil.java
@@ -129,7 +129,7 @@ public class RocketMQUtil {
public static org.apache.rocketmq.common.message.Message
convertToRocketMessage(
ObjectMapper objectMapper, String charset,
- String destination, org.springframework.messaging.Message<?> message) {
+ String destination, org.springframework.messaging.Message message) {
Object payloadObj = message.getPayload();
byte[] payloads;
diff --git
a/rocketmq-spring-boot/src/test/java/org/apache/rocketmq/spring/autoconfigure/RocketMQAutoConfigurationTest.java
b/rocketmq-spring-boot/src/test/java/org/apache/rocketmq/spring/autoconfigure/RocketMQAutoConfigurationTest.java
index 9fa0fa4..8f2a5ab 100644
---
a/rocketmq-spring-boot/src/test/java/org/apache/rocketmq/spring/autoconfigure/RocketMQAutoConfigurationTest.java
+++
b/rocketmq-spring-boot/src/test/java/org/apache/rocketmq/spring/autoconfigure/RocketMQAutoConfigurationTest.java
@@ -19,6 +19,8 @@ package org.apache.rocketmq.spring.autoconfigure;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
+import org.apache.rocketmq.client.producer.SendResult;
+import org.apache.rocketmq.client.producer.SendStatus;
import org.apache.rocketmq.spring.annotation.ExtRocketMQTemplateConfiguration;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.annotation.RocketMQTransactionListener;
@@ -38,6 +40,11 @@ import
org.springframework.boot.test.context.runner.ContextConsumer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.Message;
+import org.springframework.messaging.MessagingException;
+import org.springframework.messaging.support.GenericMessage;
+
+import java.util.ArrayList;
+import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
@@ -177,6 +184,27 @@ public class RocketMQAutoConfigurationTest {
}
@Test
+ public void testBatchSendMessage() {
+ runner.withPropertyValues("rocketmq.name-server=127.0.0.1:9876",
+ "rocketmq.producer.group=spring_rocketmq").
+ run((context) -> {
+ RocketMQTemplate rocketMQTemplate =
context.getBean(RocketMQTemplate.class);
+ List<GenericMessage<String>> batchMessages = new
ArrayList<GenericMessage<String>>();
+
+ String errorMsg = null;
+ try {
+ SendResult customSendResult =
rocketMQTemplate.syncSend("test", batchMessages, 60000);
+ } catch (IllegalArgumentException e) {
+ // it will be throw IllegalArgumentException:
`messages` can not be empty
+ errorMsg = e.getMessage();
+ }
+
+ // that means the rocketMQTemplate.syncSend is chosen the
correct type method
+ Assert.assertEquals("`messages` can not be empty",
errorMsg);
+ });
+
+ }
+
public void testPlaceholdersListenerContainer() {
runner.withPropertyValues("rocketmq.name-server=127.0.0.1:9876",
"demo.placeholders.consumer.group = abc3",
@@ -196,7 +224,6 @@ public class RocketMQAutoConfigurationTest {
});
}
-
@Configuration
static class TestConfig {