一、Springbot整合ActiveMQ需要引入依赖
1.pom
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency>
2.application.yml
# activemq的配置 spring: activemq: broker-url: tcp://127.0.0.1:61616 user: admin password: admin pool: max-connections: 100 jms: pub-sub-domain: false # false代表队列,true代表topic # 队列的名称 常量 @Value(${})获取属性 myqueue: boot-active-queue mytopic: boot-active-topic
二、整合Queue
1.QueueConfig.java
@Component public class QueueConfig { @Value("${myqueue}") private String myQueue; @Bean public Queue queue(){ return new ActiveMQQueue(myQueue); } }
2.QueueProducer.java
@Component public class QueueProducer { @Autowired private JmsMessagingTemplate jmsMessagingTemplate; @Autowired private Queue queue; // 每隔3s发送 @Scheduled(fixedDelay = 3000) public void produceMsg(){ jmsMessagingTemplate.convertAndSend(queue,"message"+ new Date().toLocaleString()); } }
3.QueueConsumer.java
@Component public class QueueConsumer { //监测消息,立马消费 @JmsListener(destination = "${myqueue}") public void receive(TextMessage textMessage) throws JMSException { System.out.println("消费到的消息是:"+ textMessage.getText()); } }
三、整合Topic主题
1.TopicConfig.java
@Component public class TopicConfig { @Value("${mytopic}") private String myTopic; @Bean public ActiveMQTopic topic(){ return new ActiveMQTopic(myTopic); } }
2.TopicProducer.java
@Component public class TopicProducer { @Autowired private JmsMessagingTemplate jmsMessagingTemplate; @Autowired private Topic topic; // 每隔3s发送 @Scheduled(fixedDelay = 3000) public void produceMsg(){ //设置成主题 方式 jmsMessagingTemplate.getJmsTemplate().setPubSubDomain(true); jmsMessagingTemplate.convertAndSend(topic,"message"+ new Date().toLocaleString()); System.out.println("发送消息。。。"); } }
3.TopicConsumer.java
@Component public class TopicConsumer { //监测消息,立马消费 @JmsListener(destination = "${mytopic}") public void receive(TextMessage textMessage) throws JMSException { System.out.println("消费到的主题消息是:"+ textMessage.getText()); } }
四、测试启动
@SpringBootApplication @EnableJms //启用消息队列 @EnableScheduling //定时任务 public class SpringbootAvtivemqApplication { public static void main(String[] args) { SpringApplication.run(SpringbootAvtivemqApplication.class, args); } }