• Spring Boot学习笔记——Spring Boot与ActiveMQ的集成


    Spring Boot对JMS(Java Message Service,Java消息服务)也提供了自动配置的支持,其主要支持的JMS实现有ActiveMQ、Artemis等。这里以ActiveMQ为例。

    一、使用内嵌的ActiveMQ

    1.添加ActiveMQ起步依赖

    在项目的pom.xml中添加ActiveMQ的依赖信息:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-activemq</artifactId>
        <version>2.0.2.RELEASE</version>
    </dependency>
    

    或者:

    <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-activemq -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-activemq</artifactId>
    </dependency>
    

    因为我的项目用的就是2.0.2.RELEASE版本,所以可以省略version信息。
    添加完spring-boot-starter-activemq依赖后,项目会自动地将ActiveMQ运行所需的JAR包加载到项目中,此时就可以在项目中使用ActiveMQ了。

    2.创建消息队列对象

    在DemoApplication.java中编写一个创建消息队列的方法:
    DemoApplication.java:

    package com.zifeiy.demo;
    
    import javax.jms.Queue;
    import org.apache.activemq.command.ActiveMQQueue;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cache.annotation.EnableCaching;
    import org.springframework.context.annotation.Bean;
    
    @SpringBootApplication
    @EnableCaching
    public class DemoApplication {
    	
    	@Bean
    	public Queue queue() {
    		return new ActiveMQQueue("active.queue");
    	}
    
    	public static void main(String[] args) {
    		SpringApplication.run(DemoApplication.class, args);
    	}
    }
    
    

    在上述代码中,@Bean注解用于定义一个Bean。

    3.创建消息生产者

    创建一个队列消息的控制器类QueueController,并在类中编写发送消息的方法:
    QueueController.java:

    package com.zifeiy.demo.controller;
    
    import javax.jms.Queue;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jms.core.JmsMessagingTemplate;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /*
     * 队列消息控制器
     */
    @RestController
    public class QueueController {
    	@Autowired
    	private JmsMessagingTemplate jmsMessagingTemplate;
    	@Autowired
    	private Queue queue;
    	/*
    	 * 消息生产者
    	 */
    	@RequestMapping("/send")
    	public void send() {
    		// 指定消息发送的目的地及内容
    		this.jmsMessagingTemplate.convertAndSend(this.queue, "新发送的消息!");
    	}
    }
    

    在上述代码中,send()方法通过jmsMessageTemplate的convertAndSend()方法指定了消息发送的目的地为Queue对象,所发送的内容为“新发送的消息!”。

    4.创建消息监听者

    创建一个客户控制器类CustomerController,并在类型编写监听和读取消息的方法:
    CustomerController.java:

    package com.zifeiy.demo.controller;
    
    import org.springframework.jms.annotation.JmsListener;
    import org.springframework.web.bind.annotation.RestController;
    
    /*
     * 客户控制器
     */
    @RestController
    public class CustomerController {
    	/*
    	 * 监听和读取消息
    	 */
    	@JmsListener(destination="active.queue")
    	public void readActiveQueue(String message) {
    		System.out.println("接受到:" + message);
    	}
    }
    

    5.启动项目,测试应用

    启动Spring Boot项目,在浏览器中输入地址http://localhost:8080/send后,Eclipse控制台将现实接受到的信息如下:

    接受到:新发送的消息!
    

    二、使用外部的ActiveMQ

    修改配置文件,添加如下:

    spring.activemq.broker-url=tcp://192.168.2.100:61616
    

    在上述配置中,192.168.2.100是远程主机的IP地址,61616是ActiveMQ的服务端口号。
    可登陆远程主机的8161端口访问ActiveMQ的管理界面。

  • 相关阅读:
    MATLAB新手教程
    关于Core Location-ios定位
    《TCP/IP具体解释卷2:实现》笔记--IP的分片和重装
    利用JasperReport+iReport进行Web报表开发
    Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系
    Openfire开发配置,Openfire源码配置,OpenFire二次开发配置
    在Activity中为什么要用managedQuery()
    24点经典算法
    linux概念之时间与时区
    java实现第五届蓝桥杯大衍数列
  • 原文地址:https://www.cnblogs.com/zifeiy/p/9063271.html
Copyright © 2020-2023  润新知