您的位置:首页 > 编程语言 > Java开发

spring-boot集成ActiveMQ

2016-12-29 14:28 447 查看
说明:spring-boot必须是1.4以上的,否则不支持ActiveMQ;没有注入JmsMessagingTemplate时,spring-boot默认用的内存中的ActiveMQ。

pom.xml文件

<!--
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>

启动App.java

package cn.com.zjq;

import javax.jms.Queue;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.jms.core.JmsMessagingTemplate;
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}

@Bean
public Queue queue(){
return new ActiveMQQueue("queue1");
}

@Bean
public ActiveMQConnectionFactory connectionFactory() {
//此链接信息可放入配置文件中
return new ActiveMQConnectionFactory("admin", "admin", "tcp://localhost:61616");
}

@Bean
public JmsMessagingTemplate jmsMessagingTemplate(ActiveMQConnectionFactory connectionFactory){
System.out.println("get JmsMessagingTemplate");
return new JmsMessagingTemplate(connectionFactory);
}
}

发送者Producter.java

import javax.jms.Queue;

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

@Component
public class Producter {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;

@Autowired
private Queue queue;

public void send(String message){
jmsMessagingTemplate.convertAndSend(queue, message);
}
}

接受者Consumer.xml

import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
@Component
public class Consumer {

@JmsListener(destination="queue1")
public void receiveQueue(String message){
System.out.println(message);
}
}

测试

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import cn.com.zjq.activemq.Producter;

@RestController
public class DemoController {

@Autowired
private Producter producter;

@RequestMapping("test")
public String test(){
producter.send("消息1");
return "success";
}
}

结果

打印结果:消息1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: