码迷,mamicode.com
首页 > 编程语言 > 详细

activeMQ学习(二、与springboot集成)

时间:2019-10-16 11:18:00      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:start   beans   pat   sys   return   文件   rod   apach   qtest   

POOM文件

首先导入activemq所需的jar包

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
    </dependencies>

 

生产者

application.yml

server:
  port: 8090
  servlet:
    context-path: /activemqProducer
spring:
  activemq:
    broker-url: tcp://127.0.0.1:61616
    user: 123
    password: 123

ActiveMqConfig

package com.example.activemqtest.config;

import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTopic;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.jms.Queue;
import javax.jms.Topic;

@Configuration
public class ActiveMQConfig {

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

    @Bean
    public Topic topic(){
        return new ActiveMQTopic("topic2");
    }

}

配置生产者要发送消息的队列或者主题,注入spring中

ProducterController

package com.example.activemqtest.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.jms.Queue;
import javax.jms.Topic;


@RestController
public class ProducterController {

    @Autowired
    private JmsMessagingTemplate jmsMessagingTemplate;

    @Autowired
    private Queue queue;

    @Autowired
    private Topic topic;


    @GetMapping("/sendMsgByQueue")
    public String sendMsgByQueue(String msg){
        jmsMessagingTemplate.convertAndSend(queue,msg);
        return msg;
    }

    @GetMapping("/sendMsgByTopic")
    public String sendMsgByTopic(String msg){
        jmsMessagingTemplate.convertAndSend(topic,msg);
        return msg;
    }
}

消费者

@JmsListener(destination = "queue2")
    //方法返回发送给queue3
    @SendTo("queue3")
    public String handleMessage(String msg){
        System.out.println("接收到的返回是:" + msg);
        return "返回:"+ msg;
    }

以上是消费者接收队列queue2的方式

若要接收topic,需要增加配置

server:
  port: 8091
  servlet:
    context-path: /activemqConsumer
spring:
  activemq:
    broker-url: tcp://127.0.0.1:61616
    user: 123
    password: 123
  jms:
    pub-sub-domain: true

 

@JmsListener(destination = "topic2")
    public void topicConsumer1(String msg){
        System.out.println("消费者1接收为:"+msg);
    }

    @JmsListener(destination = "topic2")
    public void topicConsumer2(String msg){
        System.out.println("消费者2接收为:"+msg);
    }

 

activeMQ学习(二、与springboot集成)

标签:start   beans   pat   sys   return   文件   rod   apach   qtest   

原文地址:https://www.cnblogs.com/Unlimited-Blade-Works/p/11315904.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!