getRuntime() {
return runtime;
}
- public MetricRegistry getMetricRegistry() {
- return metricRegistry;
- }
}
diff --git a/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/metrics/ProducerInstrumentation.java b/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/metrics/ProducerInstrumentation.java
deleted file mode 100644
index 1ede78026..000000000
--- a/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/metrics/ProducerInstrumentation.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2018 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.stream.binder.rocketmq.metrics;
-
-import static com.codahale.metrics.MetricRegistry.name;
-
-import org.springframework.cloud.stream.binder.rocketmq.RocketMQBinderConstants.Metrics.Producer;
-
-import com.codahale.metrics.Counter;
-import com.codahale.metrics.Meter;
-import com.codahale.metrics.MetricRegistry;
-
-/**
- * @author juven.xuxb
- * @author Jim
- */
-public class ProducerInstrumentation extends Instrumentation {
-
- private final Counter totalSent;
- private final Counter totalSentFailures;
- private final Meter sentPerSecond;
- private final Meter sentFailuresPerSecond;
-
- public ProducerInstrumentation(MetricRegistry registry, String baseMetricName) {
- super(baseMetricName);
-
- this.totalSent = registry.counter(name(baseMetricName, Producer.TOTAL_SENT));
- this.totalSentFailures = registry
- .counter(name(baseMetricName, Producer.TOTAL_SENT_FAILURES));
- this.sentPerSecond = registry
- .meter(name(baseMetricName, Producer.SENT_PER_SECOND));
- this.sentFailuresPerSecond = registry
- .meter(name(baseMetricName, Producer.SENT_FAILURES_PER_SECOND));
- }
-
- public void markSent() {
- totalSent.inc();
- sentPerSecond.mark();
- }
-
- public void markSentFailure() {
- totalSentFailures.inc();
- sentFailuresPerSecond.mark();
- }
-}
diff --git a/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/properties/RocketMQBinderConfigurationProperties.java b/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/properties/RocketMQBinderConfigurationProperties.java
index 5c12a3b46..af292e74e 100644
--- a/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/properties/RocketMQBinderConfigurationProperties.java
+++ b/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/properties/RocketMQBinderConfigurationProperties.java
@@ -16,7 +16,9 @@
package org.springframework.cloud.stream.binder.rocketmq.properties;
+import org.apache.rocketmq.common.MixAll;
import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cloud.stream.binder.rocketmq.RocketMQBinderConstants;
/**
* @author Timur Valiev
@@ -25,24 +27,69 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "spring.cloud.stream.rocketmq.binder")
public class RocketMQBinderConfigurationProperties {
- private String namesrvAddr = "127.0.0.1:9876";
+ /**
+ * The name server for rocketMQ, formats: `host:port;host:port`.
+ */
+ private String nameServer = RocketMQBinderConstants.DEFAULT_NAME_SERVER;
- private String logLevel = "ERROR";
+ /**
+ * The property of "access-key".
+ */
+ private String accessKey;
- public String getNamesrvAddr() {
- return namesrvAddr;
+ /**
+ * The property of "secret-key".
+ */
+ private String secretKey;
+
+ /**
+ * Switch flag instance for message trace.
+ */
+ private boolean enableMsgTrace = true;
+
+ /**
+ * The name value of message trace topic.If you don't config,you can use the default
+ * trace topic name.
+ */
+ private String customizedTraceTopic = MixAll.RMQ_SYS_TRACE_TOPIC;
+
+ public String getNameServer() {
+ return nameServer;
+ }
+
+ public void setNameServer(String nameServer) {
+ this.nameServer = nameServer;
+ }
+
+ public String getAccessKey() {
+ return accessKey;
}
- public void setNamesrvAddr(String namesrvAddr) {
- this.namesrvAddr = namesrvAddr;
+ public void setAccessKey(String accessKey) {
+ this.accessKey = accessKey;
}
- public String getLogLevel() {
- return logLevel;
+ public String getSecretKey() {
+ return secretKey;
}
- public void setLogLevel(String logLevel) {
- this.logLevel = logLevel;
+ public void setSecretKey(String secretKey) {
+ this.secretKey = secretKey;
}
+ public boolean isEnableMsgTrace() {
+ return enableMsgTrace;
+ }
+
+ public void setEnableMsgTrace(boolean enableMsgTrace) {
+ this.enableMsgTrace = enableMsgTrace;
+ }
+
+ public String getCustomizedTraceTopic() {
+ return customizedTraceTopic;
+ }
+
+ public void setCustomizedTraceTopic(String customizedTraceTopic) {
+ this.customizedTraceTopic = customizedTraceTopic;
+ }
}
diff --git a/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/properties/RocketMQConsumerProperties.java b/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/properties/RocketMQConsumerProperties.java
index 8202fefb5..6cfe9b842 100644
--- a/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/properties/RocketMQConsumerProperties.java
+++ b/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/properties/RocketMQConsumerProperties.java
@@ -50,41 +50,17 @@ public class RocketMQConsumerProperties {
*/
private Boolean orderly = false;
- private Boolean enabled = true;
-
- private Error error;
-
- public static class Error {
-
- /**
- * Reconsume later timeMillis in ConsumeOrderlyContext.
- */
- private Long suspendCurrentQueueTimeMillis = 1000L;
-
- /**
- * Message consume retry strategy in ConsumeConcurrentlyContext.
- *
- * -1,no retry,put into DLQ directly 0,broker control retry frequency >0,client
- * control retry frequency
- */
- private Integer delayLevelWhenNextConsume = 0;
-
- public Long getSuspendCurrentQueueTimeMillis() {
- return suspendCurrentQueueTimeMillis;
- }
-
- public void setSuspendCurrentQueueTimeMillis(Long suspendCurrentQueueTimeMillis) {
- this.suspendCurrentQueueTimeMillis = suspendCurrentQueueTimeMillis;
- }
+ /**
+ * for concurrently listener. message consume retry strategy
+ */
+ private int delayLevelWhenNextConsume = 0;
- public Integer getDelayLevelWhenNextConsume() {
- return delayLevelWhenNextConsume;
- }
+ /**
+ * for orderly listener. next retry delay time
+ */
+ private long suspendCurrentQueueTimeMillis = 1000;
- public void setDelayLevelWhenNextConsume(Integer delayLevelWhenNextConsume) {
- this.delayLevelWhenNextConsume = delayLevelWhenNextConsume;
- }
- }
+ private Boolean enabled = true;
public String getTags() {
return tags;
@@ -126,11 +102,19 @@ public class RocketMQConsumerProperties {
this.broadcasting = broadcasting;
}
- public Error getError() {
- return error;
+ public int getDelayLevelWhenNextConsume() {
+ return delayLevelWhenNextConsume;
+ }
+
+ public void setDelayLevelWhenNextConsume(int delayLevelWhenNextConsume) {
+ this.delayLevelWhenNextConsume = delayLevelWhenNextConsume;
+ }
+
+ public long getSuspendCurrentQueueTimeMillis() {
+ return suspendCurrentQueueTimeMillis;
}
- public void setError(Error error) {
- this.error = error;
+ public void setSuspendCurrentQueueTimeMillis(long suspendCurrentQueueTimeMillis) {
+ this.suspendCurrentQueueTimeMillis = suspendCurrentQueueTimeMillis;
}
}
diff --git a/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/properties/RocketMQProducerProperties.java b/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/properties/RocketMQProducerProperties.java
index b526d960d..a8d784e73 100644
--- a/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/properties/RocketMQProducerProperties.java
+++ b/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/properties/RocketMQProducerProperties.java
@@ -17,8 +17,6 @@
package org.springframework.cloud.stream.binder.rocketmq.properties;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
-import org.apache.rocketmq.client.producer.LocalTransactionExecuter;
-import org.apache.rocketmq.client.producer.TransactionCheckListener;
/**
* @author Timur Valiev
@@ -29,23 +27,61 @@ public class RocketMQProducerProperties {
private Boolean enabled = true;
/**
- * Maximum allowed message size in bytes {@link DefaultMQProducer#maxMessageSize}
+ * Name of producer.
*/
- private Integer maxMessageSize = 0;
+ private String group;
+
+ /**
+ * Maximum allowed message size in bytes {@link DefaultMQProducer#maxMessageSize}.
+ */
+ private Integer maxMessageSize = 1024 * 1024 * 4;
private Boolean transactional = false;
+ private Boolean sync = false;
+
+ private Boolean vipChannelEnabled = true;
+
/**
- * full class name of {@link LocalTransactionExecuter}
+ * Millis of send message timeout.
*/
- private String executer;
+ private int sendMessageTimeout = 3000;
/**
- * full class name of {@link TransactionCheckListener}
+ * Compress message body threshold, namely, message body larger than 4k will be
+ * compressed on default.
*/
- private String transactionCheckListener;
+ private int compressMessageBodyThreshold = 1024 * 4;
- private Boolean vipChannelEnabled = true;
+ /**
+ * Maximum number of retry to perform internally before claiming sending failure in
+ * synchronous mode. This may potentially cause message duplication which is up to
+ * application developers to resolve.
+ */
+ private int retryTimesWhenSendFailed = 2;
+
+ /**
+ *
+ * Maximum number of retry to perform internally before claiming sending failure in
+ * asynchronous mode.
+ *
+ * This may potentially cause message duplication which is up to application
+ * developers to resolve.
+ */
+ private int retryTimesWhenSendAsyncFailed = 2;
+
+ /**
+ * Indicate whether to retry another broker on sending failure internally.
+ */
+ private boolean retryNextServer = false;
+
+ public String getGroup() {
+ return group;
+ }
+
+ public void setGroup(String group) {
+ this.group = group;
+ }
public Boolean getEnabled() {
return enabled;
@@ -71,20 +107,12 @@ public class RocketMQProducerProperties {
this.transactional = transactional;
}
- public String getExecuter() {
- return executer;
- }
-
- public void setExecuter(String executer) {
- this.executer = executer;
- }
-
- public String getTransactionCheckListener() {
- return transactionCheckListener;
+ public Boolean getSync() {
+ return sync;
}
- public void setTransactionCheckListener(String transactionCheckListener) {
- this.transactionCheckListener = transactionCheckListener;
+ public void setSync(Boolean sync) {
+ this.sync = sync;
}
public Boolean getVipChannelEnabled() {
@@ -94,4 +122,45 @@ public class RocketMQProducerProperties {
public void setVipChannelEnabled(Boolean vipChannelEnabled) {
this.vipChannelEnabled = vipChannelEnabled;
}
-}
+
+ public int getSendMessageTimeout() {
+ return sendMessageTimeout;
+ }
+
+ public void setSendMessageTimeout(int sendMessageTimeout) {
+ this.sendMessageTimeout = sendMessageTimeout;
+ }
+
+ public int getCompressMessageBodyThreshold() {
+ return compressMessageBodyThreshold;
+ }
+
+ public void setCompressMessageBodyThreshold(int compressMessageBodyThreshold) {
+ this.compressMessageBodyThreshold = compressMessageBodyThreshold;
+ }
+
+ public int getRetryTimesWhenSendFailed() {
+ return retryTimesWhenSendFailed;
+ }
+
+ public void setRetryTimesWhenSendFailed(int retryTimesWhenSendFailed) {
+ this.retryTimesWhenSendFailed = retryTimesWhenSendFailed;
+ }
+
+ public int getRetryTimesWhenSendAsyncFailed() {
+ return retryTimesWhenSendAsyncFailed;
+ }
+
+ public void setRetryTimesWhenSendAsyncFailed(int retryTimesWhenSendAsyncFailed) {
+ this.retryTimesWhenSendAsyncFailed = retryTimesWhenSendAsyncFailed;
+ }
+
+ public boolean isRetryNextServer() {
+ return retryNextServer;
+ }
+
+ public void setRetryNextServer(boolean retryNextServer) {
+ this.retryNextServer = retryNextServer;
+ }
+
+}
\ No newline at end of file
diff --git a/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/provisioning/RocketMQTopicProvisioner.java b/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/provisioning/RocketMQTopicProvisioner.java
index 456ef5cc6..d8d08626b 100644
--- a/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/provisioning/RocketMQTopicProvisioner.java
+++ b/spring-cloud-stream-binder-rocketmq/src/main/java/org/springframework/cloud/stream/binder/rocketmq/provisioning/RocketMQTopicProvisioner.java
@@ -18,8 +18,6 @@ package org.springframework.cloud.stream.binder.rocketmq.provisioning;
import org.apache.rocketmq.client.Validators;
import org.apache.rocketmq.client.exception.MQClientException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.cloud.stream.binder.ExtendedConsumerProperties;
import org.springframework.cloud.stream.binder.ExtendedProducerProperties;
import org.springframework.cloud.stream.binder.rocketmq.properties.RocketMQConsumerProperties;
@@ -36,9 +34,6 @@ import org.springframework.cloud.stream.provisioning.ProvisioningProvider;
public class RocketMQTopicProvisioner implements
ProvisioningProvider, ExtendedProducerProperties> {
- private static final Logger logger = LoggerFactory
- .getLogger(RocketMQTopicProvisioner.class);
-
@Override
public ProducerDestination provisionProducerDestination(String name,
ExtendedProducerProperties properties)
diff --git a/spring-cloud-stream-binder-rocketmq/src/main/resources/META-INF/spring.factories b/spring-cloud-stream-binder-rocketmq/src/main/resources/META-INF/spring.factories
index 43b85129a..46f79a889 100644
--- a/spring-cloud-stream-binder-rocketmq/src/main/resources/META-INF/spring.factories
+++ b/spring-cloud-stream-binder-rocketmq/src/main/resources/META-INF/spring.factories
@@ -1,2 +1,2 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
-org.springframework.cloud.stream.binder.rocketmq.config.RocketMQBinderEndpointAutoConfiguration
+org.springframework.cloud.stream.binder.rocketmq.config.RocketMQComponent4BinderAutoConfiguration
diff --git a/spring-cloud-stream-binder-rocketmq/src/test/java/org/springframework/cloud/stream/binder/rocketmq/RocketMQAutoConfigurationTests.java b/spring-cloud-stream-binder-rocketmq/src/test/java/org/springframework/cloud/stream/binder/rocketmq/RocketMQAutoConfigurationTests.java
index 9b1be23f5..4a787e65d 100644
--- a/spring-cloud-stream-binder-rocketmq/src/test/java/org/springframework/cloud/stream/binder/rocketmq/RocketMQAutoConfigurationTests.java
+++ b/spring-cloud-stream-binder-rocketmq/src/test/java/org/springframework/cloud/stream/binder/rocketmq/RocketMQAutoConfigurationTests.java
@@ -22,7 +22,6 @@ import org.junit.Test;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.cloud.stream.binder.rocketmq.config.RocketMQBinderAutoConfiguration;
-import org.springframework.cloud.stream.binder.rocketmq.config.RocketMQBinderEndpointAutoConfiguration;
import org.springframework.cloud.stream.binder.rocketmq.properties.RocketMQBinderConfigurationProperties;
import org.springframework.cloud.stream.binder.rocketmq.properties.RocketMQExtendedBindingProperties;
@@ -33,8 +32,7 @@ public class RocketMQAutoConfigurationTests {
private ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(
- AutoConfigurations.of(RocketMQBinderEndpointAutoConfiguration.class,
- RocketMQBinderAutoConfiguration.class))
+ AutoConfigurations.of(RocketMQBinderAutoConfiguration.class))
.withPropertyValues(
"spring.cloud.stream.rocketmq.binder.namesrv-addr=127.0.0.1:9876",
"spring.cloud.stream.bindings.output.destination=TopicOrderTest",
@@ -55,7 +53,7 @@ public class RocketMQAutoConfigurationTests {
this.contextRunner.run(context -> {
RocketMQBinderConfigurationProperties binderConfigurationProperties = context
.getBean(RocketMQBinderConfigurationProperties.class);
- assertThat(binderConfigurationProperties.getNamesrvAddr())
+ assertThat(binderConfigurationProperties.getNameServer())
.isEqualTo("127.0.0.1:9876");
RocketMQExtendedBindingProperties bindingProperties = context
.getBean(RocketMQExtendedBindingProperties.class);