ActiveMQ學習之SpringBoot整合ActiveMQ------>主題生產者和消費者

1、pom

<!--聚合工程集成關係-->
  <!--統一整合第三方框架依賴信息-->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.1.RELEASE</version>
  </parent>

  <dependencies>
    <!-- -springboot 整合Web組件 整合SpringMVC 就會把傳統方式的SpringMVC依賴的jar所有給下載來 -->
    <!-- 引入spring-boot-starter-web 幫你整合好全部相關的依賴jar包 原理 maven依賴傳遞 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--springboot整合activeMQ-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-activemq</artifactId>
    </dependency>
  </dependencies>

2、配置文件(application.yml)

spring:
  activemq:
    broker-url: tcp://192.168.44.135:61616
    user: admin
    password: admin
  jms:
    #此處若是爲false表示爲隊列(queue)true表示爲主題(topic)
    pub-sub-domain: true
#主題名稱
mytopic: boot-topic

3、配置類

import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTopic;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

import javax.jms.Queue;
import javax.jms.Topic;

/**
 * @ProjectName: springbootActiveMQDemo
 * @Package: cn.**.config
 * @Author: huat
 * @Date: 2020/1/22 15:25
 * @Version: 1.0
 */
@Configuration
public class ActiveMQConfig {
    //經過配置文件獲取主題名稱
    @Value("${mytopic}")
    private String topicName;

    @Bean
    public Topic topic(){
        return new ActiveMQTopic(topicName);
    }

}

4、生產者

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;


import javax.jms.Topic;

/**
 * @ProjectName: springbootActiveMQDemo
 * @Package: cn.**.topic
 * @Author: huat
 * @Date: 2020/1/22 15:29
 * @Version: 1.0
 */
@Component
public class TopicProduce {
    @Autowired
    private JmsMessagingTemplate jmsMessagingTemplate;
    @Autowired
    private Topic topic;

    public void produce(){
        //發送消息
        jmsMessagingTemplate.convertAndSend(topic,"topic****bootDemo");
    }

    @Scheduled(fixedDelay = 3000)//定時任務  3秒
    public void produceScheduled(){
        //發送消息
        jmsMessagingTemplate.convertAndSend(topic,"topic--->Scheduled****bootDemo");

    }
}

5、消費者

import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;

import javax.jms.JMSException;
import javax.jms.TextMessage;

/**
 * @ProjectName: springbootActiveMQDemo
 * @Package: cn.**.topic
 * @Author: huat
 * @Date: 2020/1/22 16:35
 * @Version: 1.0
 */
@Component
public class TopicConsumer {
    @JmsListener(destination = "${mytopic}")//監聽註解,裏面的值爲隊列名稱
    public void receive(TextMessage textMessage) throws JMSException {
        System.out.println("接受的消息是"+textMessage.getText());
    }
}

6、啓動類

import javafx.application.Application;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.scheduling.annotation.EnableScheduling;

/**
 * @ProjectName: springbootActiveMQDemo
 * @Package: cn.**
 * @Author: huat
 * @Date: 2020/1/22 14:46
 * @Version: 1.0
 */
@SpringBootApplication
@EnableJms//開啓jms的註解以及適配
@EnableScheduling//開啓定時任務
public class SpringbootAppStart {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootAppStart.class,args);
    }
}
相關文章
相關標籤/搜索