spring boot-整合RabbitMq(RabbitMq基础)

一、RabbitMq基础

RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue Protocol)的开源实现。

  • Exchange
    交换器,用来接收生产者发送的消息并将这些消息路由给服务器中的队列。
    Exchange有4种类型: direct(默认), fanout, topic, 和headers,不同类型的Exchange转发消息的策略有所区别。

  • Queue
    消息队列,用来保存消息直到发送给消费者。它是消息的容器,也是消息的终点。一个消息可投入一个或多个队列。消息一直在队列里面,等待消费者连接到这个队列将取走。

  • Binding
    绑定,用于消息队列和交换器之间的关联。一个绑定就是基于路由键将交换器和消息队列连接起来的路由规则,所以可以将交换器理解成一个由绑定构成的路由表。

    Exchange 和Queue的绑定可以是多对多的关系。

总结: 创建 Exchange 利用路由键,将Exchange 和Queue的绑定,消费端 自己从自己指定的队列拿取数据(消费端需指定队列获取消息)。消息发送端一般需要指定exchange和routingKey。

生产者发送消息到交换机并指定一个路由key,消费者队列绑定到交换机时要制定路由key(key匹配就能接受消息,key不匹配就不能接受消息)

二、Springboot 整合RabbitMq

1. spring boot 安装配置rabbitMq

Spring Boot 2.X - Spring Boot整合AMQP之RabbitMQ
参考URL: https://www.pianshen.com/article/4074353758/

1.1 导入maven依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

1.2 添加配置文件信息

在application.properties文件当中引入RabbitMQ基本的配置信息

#对于rabbitMQ的支持
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

1.3 编写RabbitConfig

启用Rabbit注解

@SpringBootApplication
@EnableRabbit // 开启基于注解的RabbitMQ模式
public class SpringBootAmqpApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootAmqpApplication.class, args);
    }
}

1.4 新建一个AmqpController,用于发送消息

@RestController
public class AmqpController {

    private final RabbitTemplate rabbitTemplate;

    public AmqpController(RabbitTemplate rabbitTemplate) {
        this.rabbitTemplate = rabbitTemplate;
    }

    private final static String SUCCESS = "success";

    /**
     * 单点
     * @param msg
     * @return
     */
    @GetMapping("/direct")
    public String direct(String msg){
        rabbitTemplate.convertAndSend("amq.direct", "xudc", msg);
        return SUCCESS;
    }

    @GetMapping("/fanout")
    public String fanout(String msg) {
        rabbitTemplate.convertAndSend("amq.fanout", "", msg);
        return SUCCESS;
    }

    @GetMapping("/topic")
    public String topic(String msg){
        rabbitTemplate.convertAndSend("amq.topic", "xudc.#", msg);
        return SUCCESS;
    }
}

1.5 编写消息监听者

@Component
public class AmqpListener {

    @RabbitListener(queues = "xudc")
    public void receive1(String message) {
        System.err.println("xudc -- receive1接收到消息:" + message);
    }

    @RabbitListener(queues = "xudc.book")
    public void receive2(String message) {
        System.err.println("xudc.book -- receive2接收到消息:" + message);
    }

    @RabbitListener(queues = "andy")
    public void receive3(String message) {
        System.err.println("andy -- receive3接收到消息:" + message);
    }
}

三、参考

SpringBoot集成rabbitmq(一)
参考URL: https://www.cnblogs.com/sword-successful/p/10295561.html
Spring Boot 整合 AMQP
参考URL: https://blog.youkuaiyun.com/kangguang/article/details/104553352
Spring Boot 2.X - Spring Boot整合AMQP之RabbitMQ
参考URL: https://www.pianshen.com/article/4074353758/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值