【springboot整合ActiveMQ】-发送消息到中间件
本文为ActiveMQ中队列模式的生产者
一、导包:
<!--activeMq--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> <!--消息队列连接池--> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-pool</artifactId> <version>5.15.0</version> </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);