说明: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