Polish pull request to fix other similar issues
Signed-off-by: Li Zhanhui <lizhanhui@gmail.com>
diff --git a/rocketmq-v5-client-spring-boot/src/main/java/org/apache/rocketmq/client/core/RocketMQClientTemplate.java b/rocketmq-v5-client-spring-boot/src/main/java/org/apache/rocketmq/client/core/RocketMQClientTemplate.java
index 637811d..046f3a3 100644
--- a/rocketmq-v5-client-spring-boot/src/main/java/org/apache/rocketmq/client/core/RocketMQClientTemplate.java
+++ b/rocketmq-v5-client-spring-boot/src/main/java/org/apache/rocketmq/client/core/RocketMQClientTemplate.java
@@ -51,9 +51,9 @@
private SimpleConsumerBuilder simpleConsumerBuilder;
- private Producer producer;
+ private volatile Producer producer;
- private SimpleConsumer simpleConsumer;
+ private volatile SimpleConsumer simpleConsumer;
private RocketMQMessageConverter rocketMQMessageConverter = new RocketMQMessageConverter();
@@ -61,12 +61,14 @@
public Producer getProducer() {
if (Objects.isNull(producer)) {
- try {
- Producer producer = producerBuilder.build();
- this.setProducer(producer);
- return producer;
- } catch (ClientException e) {
- throw new RuntimeException(e);
+ synchronized (RocketMQClientTemplate.class) {
+ if (Objects.isNull(producer)) {
+ try {
+ this.producer = producerBuilder.build();
+ } catch (ClientException e) {
+ throw new RuntimeException(e);
+ }
+ }
}
}
return producer;
@@ -79,10 +81,14 @@
public SimpleConsumer getSimpleConsumer() {
if (Objects.isNull(simpleConsumer)) {
- try {
- return simpleConsumerBuilder.build();
- } catch (ClientException e) {
- throw new RuntimeException(e);
+ synchronized (RocketMQClientTemplate.class) {
+ if (Objects.isNull(simpleConsumer)) {
+ try {
+ this.simpleConsumer = simpleConsumerBuilder.build();
+ } catch (ClientException e) {
+ throw new RuntimeException(e);
+ }
+ }
}
}
return simpleConsumer;