初识RabbitMQ,SpringBoot整合RabbitMQ

写在开始:一个搬砖程序员的随缘记录

一、RabbitMQ简介

RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗,消息队列是一种应用系统之间的通信方法,是通过读写出入队列的消息来通信(RPC则是通过直接调用彼此来通信的)
AMQP(Advanced Message Queuing Protocol)高级消息队列协议是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。

二、RabbitMQ详解

包含内容:

Producer:生产者,消息发送者
Consumer :消费者,接收消息者
Broker :消息中间件的服务节点
Queue :队列,用来接收生产者发送的消息
Exchange:交换机
RoutingKey :路由键
Binding :用于绑定交换机和路由键
RabbitMQ简单流程图

RabbitMQ简单流程图
在这里插入图片描述

三、RabbitMQ安装和使用

1、安装RabbitMQ

mac版本RabbitMQ安装可看我写的文章
Mac安装RabbitMQ

2、使用

SpringBoot项目整体结构
在这里插入图片描述

下面是具体的代码

pom.xml

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

<!-- lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

application.yml

server:
  port: 8080 #端口号
spring:
  application:
    name: rabbitmq
  rabbitmq:
    host: localhost #rabbitmq host
    port: 5672 #rabbitmq port
    username: guest #rabbitmq账号
    password: guest #rabbitmq密码

RabbitMQ配置类
QueueConfig.Java

package com.cn.rabbitmq.config;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * rabbitMQ配置类
 * @author demo
 * @date 2020/11/12 18:33
 */
@Configuration
public class QueueConfig {
    /**
     * 初始化队列
     * 队列名称 QueueTest
     */
    @Bean
    public Queue queueTest() {
        // durable:是否持久化,默认是false
        return new Queue("QueueTest", true);
    }

    /**
     * 初始化交换机
     * 队列名称 ExchangeTest
     */
    @Bean
    DirectExchange exchangeTest() {
        return new DirectExchange("ExchangeTest", true, false);
    }

    /**
     * 将队列和交换机绑定
     * 设置用于匹配键:RoutingTest
     */
    @Bean
    Binding bindingDirect() {
        return BindingBuilder.bind(queueTest()).to(exchangeTest()).with("RoutingTest");
    }
}

消息消费类
DirectReceiver.Java

package com.cn.rabbitmq.config;

import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

/**
 * 消息消费
 * @author demo
 * @date 2020/11/12 18:47
 */

@Component
//指定消费队列名称QueueTest
@RabbitListener(queues = "QueueTest")
public class DirectReceiver {

    @RabbitHandler
    public void process(String message) {
        System.out.println("接收到的消息: " + message);
    }
}

发送消息Controller
SendMessageController.Java

package com.cn.rabbitmq.controller;

import lombok.RequiredArgsConstructor;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 消息生产
 * @author demo
 * @date 2020/11/12 18:41
 */
@RestController
@RequiredArgsConstructor(onConstructor_ = @Autowired)
public class SendMessageController {
    /**
     * rabbit消息发送/接收等方法
     * */
    private final RabbitTemplate rabbitTemplate;

    @GetMapping("/sendMessage")
    public String sendMessage() {
        //将消息携带绑定键值:RoutingTest 发送到交换机ExchangeTest
        rabbitTemplate.convertAndSend("ExchangeTest", "RoutingTest", "Hello Word!");
        return "发送成功";
    }
}

然后启动项目
请求发送消息接口:http://localhost:8080/sendMessage
在这里插入图片描述
打开日志看下消费信息
在这里插入图片描述
这就是一个简单的RabbitMQ运行流程

Over

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值