1. 程式人生 > >Springboot activemq 對象傳遞

Springboot activemq 對象傳遞

odi blog specified hub AS url static itl rust

86. Spring Boot集成ActiveMQ【從零開始學Spring Boot】

博客分類:
  • 從零開始學Spring Boot

【視頻&交流平臺】

à SpringBoot視頻

http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

à SpringCloud視頻

http://study.163.com/course/introduction.htm?courseId=1004638001&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

à Spring Boot源碼

https://gitee.com/happyangellxq520/spring-boot

à Spring Boot交流平臺

http://412887952-qq-com.iteye.com/blog/2321532

在Spring Boot中集成ActiveMQ相對還是比較簡單的,都不需要安裝什麽服務,默認使用內存的activeMQ,當然配合ActiveMQ Server會更好。在這裏我們簡單介紹怎麽使用,本節主要分以下幾個步驟:

(1) 新建Maven Java Project;

(2) 在pom.xml引入依賴;

(3) 編碼測試

(4) 配置信息

接下來看看各個步驟的操作:

(1) 新建Maven Java Project;

新建一個工程取名為spring-boot-activemq

(2) 在pom.xml引入依賴;

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.kfit</groupId>

<artifactId>spring-boot-activemq</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>jar</packaging>

<name>spring-boot-activemq</name>

<url>http://maven.apache.org</url>

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<!-- jdk版本號,Angel在這裏使用1.8,大家修改為大家本地配置的jdk版本號即可 -->

<java.version>1.8</java.version>

</properties>

<!--

spring boot 父節點依賴,

引入這個之後相關的引入就不需要添加version配置,

spring boot會自動選擇最合適的版本進行添加。

-->

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>1.4.0.RELEASE</version>

</parent>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<scope>test</scope>

</dependency>

<!-- spring boot web支持:mvc,aop... -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<!-- activemq support -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-activemq</artifactId>

</dependency>

</dependencies>

</project>

這裏是引入了activemq的依賴,在這裏需要註意下spring boot的版本是1.4.0之前的大部分的例子都是1.3.3的,這裏必須是1.4+不然是不支持activemq。

(3) 編碼測試

這裏主要涉及到幾個角色,消息生產者,消息隊列,消息消費者。所以只需要把這個解決實現了,編碼也就完成了。

消息隊列Queue,這裏編寫在啟動類App.java中,以@Bean的方式註入:

package com.kfit;

import javax.jms.Queue;

import org.apache.activemq.command.ActiveMQQueue;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.context.annotation.Bean;

/**

*

* @author Angel --守護天使

* @version v.0.1

* @date 2016年8月23日

*/

@SpringBootApplication

public class App {

@Bean

public Queue queue() {

return new ActiveMQQueue("sample.queue");

}

public static void main(String[] args) {

SpringApplication.run(App.class, args);

}

}

在這裏註入了一個ActiveMQQueue。

消息生產者com.kfit.demo.Producer:

package com.kfit.demo;

import javax.jms.Queue;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.jms.core.JmsMessagingTemplate;

import org.springframework.scheduling.annotation.EnableScheduling;

import org.springframework.scheduling.annotation.Scheduled;

import org.springframework.stereotype.Component;

/**

* 消息生產者.

* @author Angel --守護天使

* @version v.0.1

* @date 2016年8月23日

*/

@Component

@EnableScheduling

public class Producer {

@Autowired

private JmsMessagingTemplate jmsMessagingTemplate;

@Autowired

private Queue queue;

@Scheduled(fixedDelay=3000)//每3s執行1次

public void send() {

this.jmsMessagingTemplate.convertAndSend(this.queue, "hi,activeMQ");

}

}

這裏使用JmsMessagingTemplate 進行消息的操作,然後使用任務調度3秒1次執行消息的發布。

消息消費者com.kfit.demo.Consumer:

package com.kfit.demo;

import org.springframework.jms.annotation.JmsListener;

import org.springframework.stereotype.Component;

/**

* 消息消費者.

* @author Angel --守護天使

* @version v.0.1

* @date 2016年8月23日

*/

@Component

public class Consumer {

@JmsListener(destination = "sample.queue")

public void receiveQueue(String text) {

System.out.println(text);

}

}

這裏主要是加入了@JmsListener進行監聽,然後接收消息然後打印。

好了,到這裏就大功告成了。運行下程序觀察控制臺的打印信息:

hi,activeMQ

hi,activeMQ

hi,activeMQ

(4) 配置信息

在上面我們並沒有配置activeMQ的相關信息,實際上spring boot提供了默認的配置,我們可以在application.properties進行配置:

# ACTIVEMQ (ActiveMQProperties)

spring.activemq.broker-url= # URL of the ActiveMQ broker. Auto-generated by default. For instance `tcp://localhost:61616`

spring.activemq.in-memory=true # Specify if the default broker URL should be in memory. Ignored if an explicit broker has been specified.

spring.activemq.password= # Login password of the broker.

spring.activemq.user= # Login user of the broker.

spring.activemq.packages.trust-all=false # Trust all packages.

spring.activemq.packages.trusted= # Comma-separated list of specific packages to trust (when not trusting all packages).

spring.activemq.pool.configuration.*= # See PooledConnectionFactory.

spring.activemq.pool.enabled=false # Whether a PooledConnectionFactory should be created instead of a regular ConnectionFactory.

spring.activemq.pool.expiry-timeout=0 # Connection expiration timeout in milliseconds.

spring.activemq.pool.idle-timeout=30000 # Connection idle timeout in milliseconds.

spring.activemq.pool.max-connections=1 # Maximum number of pooled connections.

Springboot activemq 對象傳遞