From 6ba281b7edfc0ab2236fe48012d805ab0082fea8 Mon Sep 17 00:00:00 2001 From: cc Date: Sun, 1 Dec 2024 12:46:43 +0800 Subject: [PATCH] 1 --- .../business/mq/MessageProducerService.java | 39 +++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/src/main/java/cn/van/business/mq/MessageProducerService.java b/src/main/java/cn/van/business/mq/MessageProducerService.java index b23f808..fc5bab1 100644 --- a/src/main/java/cn/van/business/mq/MessageProducerService.java +++ b/src/main/java/cn/van/business/mq/MessageProducerService.java @@ -1,8 +1,16 @@ package cn.van.business.mq; +import cn.van.business.util.WXUtil; import com.alibaba.fastjson2.JSONObject; +import lombok.SneakyThrows; +import org.apache.rocketmq.client.exception.MQClientException; +import org.apache.rocketmq.client.producer.DefaultMQProducer; +import org.apache.rocketmq.client.producer.MQProducer; import org.apache.rocketmq.spring.core.RocketMQTemplate; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.apache.rocketmq.common.message.Message; import org.springframework.stereotype.Service; /** @@ -14,13 +22,38 @@ import org.springframework.stereotype.Service; @Service public class MessageProducerService { - @Autowired - private RocketMQTemplate rocketMQTemplate; + + private static final Logger logger = LoggerFactory.getLogger(MessageProducerService.class); private static final String topic = "wx-message"; + private static volatile DefaultMQProducer shareProducer; + public MQProducer getProducer() throws MQClientException { + if (shareProducer == null) { + synchronized (MQProducer.class) { + if (shareProducer == null) { + shareProducer = createProducer(); + } + } + } + return shareProducer; + } + + public DefaultMQProducer createProducer() throws MQClientException { + + DefaultMQProducer producer = new DefaultMQProducer("wx_producer"); + producer.setNamesrvAddr("192.168.8.88:9876"); + producer.start(); + + logger.info("shareProducer[{}|{}]", "wx_producer", producer.getNamesrvAddr()); + + return producer; + } + + @SneakyThrows public void sendMessage(JSONObject jsonObject) { - this.rocketMQTemplate.convertAndSend(topic, jsonObject.toJSONString()); + Message message = new Message(topic, jsonObject.toJSONString().getBytes()); + getProducer().send(message); } }