springboot 使用rabbitmq消息队列

目录

1.引入rabbitmq依赖

2.application.yml配置文件

3.消息接收端的三种实现

4.发送端的实现


1.引入rabbitmq依赖

        <!--rabbitmq-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
            <version>2.1.3.RELEASE</version>
        </dependency>

2.application.yml配置文件

spring: 
  rabbitmq:
    host: 127.0.0.1
    port: 5672 #默认端口5762
    username: ***
    password: ***

3.消息接收端的三种实现

package com.free.food.order.mq.receiver;

import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

/**
 * 类功能描述:接收mq消息
 *
 * @author:***
 * @createTime:2019-02-27 16:29
 */
@Component
public class TestReceiver {

    /**
     * 1.接收已有队列 (不推荐)
     * 需要事先在rabbitmq上手动创建好"testQueues"队列  
     */
    @RabbitListener(queues = "testQueues")
    public void process(String message) {
        System.out.println("testQueues收到消息:" + message);
    }

    /**
     * 2.自动创建队列 (大多数使用这种方式)
     */
    @RabbitListener(queuesToDeclare = @Queue("autoCreateQueues"))
    public void process2(String message) {
        System.out.println("autoCreateQueues收到消息:" + message);

    }
    /**
     * 3.自动创建队列,Exchange和Queue绑定  (需要精确划分业务)
     * Exchange可以看成消息的分组,
     * 如果有两个消息队列绑定了同一个exchange,那么向exchange发消息的时候,这两个消息队列都能收到消息
     * 如果一个消息队列绑定了两个exchange,那么往任意一个exchange发消息的时候,这个消息队列都能收到消息
     *
     */
    @RabbitListener(bindings = @QueueBinding(value = @Queue("bindQueues"), exchange = @Exchange("oneExChange"), key = "one"))
    public void process3(String message) {
        System.out.println("bindQueues,oneExChange,one收到消息:" + message);

    }

    @RabbitListener(bindings = @QueueBinding(value = @Queue("bindQueues"), exchange = @Exchange("twoExChange"), key = "two"))
    public void process4(String message) {
        System.out.println("bindQueues,twoExChange,two收到消息:" + message);
    }

}

4.发送端的实现

package com.free.food.order.mq.receiver;

import com.free.food.order.OrderServiceApplicationTests;
import org.junit.Test;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import static org.junit.Assert.*;

/**
 * 类功能描述:
 *
 * @author:***
 * @createTime:2019-02-27 16:33
 */
@Component
public class TestReceiverTest extends OrderServiceApplicationTests {
    @Autowired
    private AmqpTemplate amqpTemplate;

    @Test
    public void process() {
        //向消息队列发送消息
        amqpTemplate.convertAndSend("testQueues","test");
    }
    @Test
    public void process2() {
        //向消息队列发送消息
        amqpTemplate.convertAndSend("autoCreateQueues","test");
    }
    @Test
    public void process3() {
        //向exchange的某个key发送消息,process3接收到消息
        amqpTemplate.convertAndSend("oneExChange","one","发往bindQueues队列,oneExChange,one的消息");
    }
    @Test
    public void process4() {
        //向exchange的某个key发送消息,process4接收到消息
        amqpTemplate.convertAndSend("twoExChange","two","发往bindQueues队列,twoExChange,two的消息");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值