【springboot整合ActiveMQ】-发送消息到中间件
挖个新坑慢慢填。。。本文为ActiveMQ中队列模式的生产者
一、导包:
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-activemqartifactId>
dependency>
<dependency>
<groupId>org.apache.activemqgroupId>
<artifactId>activemq-poolartifactId>
<version>5.15.0version>
dependency>
二、在配置文件中添加连接信息:
spring:
activemq:
broker-url: tcp://10.00.100.0:8081
user: XXX
password: XXXXX
jms:
pub-sub-domain: false
myqueue: queueName
三、生产者Util如下,如果不采用封装成Util的方式的话,可以在实现类中直接使用 @Autowired 注解进行注入,要封装成Util则需要在Util中用构造方法的方式注入JmsMessagingTemplate 和Queue ,否则会注入不进去
import lombok.extern.slf4j.Slf4j; import org.apache.activemq.command.ActiveMQQueue; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsMessagingTemplate; import org.springframework.jms.core.JmsTemplate; import org.springframework.stereotype.Component; import javax.jms.Queue; @Slf4j @Component public class ActiveMqProducerUtil { // @Autowired // public JmsTemplate jmsMessagingTemplate; // @Autowired // public Queue queue; //JmsMessagingTemplate是Springboot的Jms模板,Spring的是JmsTemplate private static JmsMessagingTemplate jmsMessagingTemplate; //把ConfigBean类的ActiveMQQueue注入进来 private static Queue queue; //构造注入对象 public ActiveMqProducerUtil(JmsMessagingTemplate jmsMessagingTemplate, Queue queue) { ActiveMqProducerUtil.jmsMessagingTemplate = jmsMessagingTemplate; ActiveMqProducerUtil.queue = queue; } public static boolean produceMessage(String messageStr) { if (StringUtils.isBlank(messageStr)) { log.error(String.format("messageStr:", messageStr)); return false; } try { jmsMessagingTemplate.convertAndSend(queue, messageStr); return true; } catch (Exception e) { log.error(String.format("messageStr:发布失败", e.getMessage())); return false; } } }
实体类:
import lombok.Data; import java.util.Date; @Data public class UserVo { Date birthday; String name; String phone; }
生产者业务部分(直接通过类名调用):
UserVo user= new UserVo(); user.setBirthday(new Date()); user.setName(""张三); user.setPhone("18945670000"); String userStr = JSON.toJSONString(user); ActiveMqProducerUtil.produceMessage(userStr);
参考链接: