1、springboot和activemq的使用相对来说比较方便了,我在网上看了很多其他的资料,但是自己写出来总是有点问题所以,这里重点描述一下遇到的一些问题。

2、至于activemq的搭建和springmvc的搭建可以参考:http://www.cnblogs.com/ll409546297/p/6898155.html

3、项目的搭建和使用

  1)目录结构

  

  2)需要的依赖包pom.

<?  version="1.0" encoding="UTF-8"?><project  ns="http://maven.apache.org/POM/4.0.0"          ns:xsi="http://www.w3.org/2001/ Schema-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.troy</groupId>    <artifactId>springbootactivemq</artifactId>    <version>1.0-SNAPSHOT</version>    <parent>        <groupId>org.spring work.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>1.5.7.RELEASE</version>    </parent>    <dependencies>        <dependency>            <groupId>org.spring work.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>            <version>1.5.7.RELEASE</version>        </dependency>        <dependency>            <groupId>org.spring work.boot</groupId>            <artifactId>spring-boot-starter-activemq</artifactId>            <version>1.5.7.RELEASE</version>        </dependency>    </dependencies></project>

  3)基本的配置application.yml

server:  port: 8090spring:  activemq:    broker-url: tcp://192.168.5.10:61616    user: admin    password: admin  jms:    pub-sub-domain: true

  说明:jms:pub-sub-domain:true(为true时是topic模式,为false是queue模式)  

  4)这里介绍两种发送数据的方式

  (1)确定发送方式,这种需要做配置

  topic模式:ActiveMqTopicConfig.class

@Configurationpublic class ActiveMqTopicConfig {    @Bean    public Topic topic(){        return new ActiveMQTopic("topic");    }}

  queue模式:ActiveMqQueueConfig.class

@Configurationpublic class ActiveMqQueueConfig {    @Bean    public Queue queue(){        return new ActiveMQQueue("queue");    }}

  发送:ActiveMqClient.class

@RestController@RequestMapping("/api")public class ActiveMqClient {    @Autowired    private JmsTemplate jmsTemplate;    @Autowired    private Topic topic;    @Autowired    private Queue queue;    @RequestMapping("/send")    public void send(){        jmsTemplate.convertAndSend(this.topic,"发送的topic数据!");        jmsTemplate.convertAndSend(this.queue,"发送的queue数据!");    }}

  注:这里我方便测试,就直接写的调用的方式!

  (2)直接发送的方式:ActiveMqClient.class

@RestController@RequestMapping("/api")public class ActiveMqClient {    @Autowired    private JmsTemplate jmsTemplate;    @RequestMapping("/send")    public void send(){        jmsTemplate.send("topic", new MessageCreator() {            @Override            public Message createMessage(Session session) throws JMSException {                TextMessage textMessage = session.createTextMessage();                textMessage.setText("send data");                return textMessage;            }        });    }}

  5)接收数据:ActiveMqServer.class

@Componentpublic class ActiveMqServer {    @JmsListener(destination = "topic")    public void receiveTopic(String message) {        System.out.println("监听topic=============监听topic");        System.out.println(message);    }    @JmsListener(destination = "queue")    public void receiveQueue(String message) {        System.out.println("监听queue=============监听queue");        System.out.println(message);    }}

  注:也可以实现MessageListener接口来接收数据,但是需要配置的东西和springmvc差不多,这里不做介绍。

 

收藏 打印