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的管理界面。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM