RabbitMQ基本使用

      最后更新:2022-02-26 10:45

      消息队列
      Message queue 释义
      服务之间最常见的通信方式是直接调用彼此来通信 , 消息从一端发出后立即就可以达到另一端 , 称为即时消息通讯 ( 同步通信 )
      消息从某一端发出后 , 首先进入一个容器进行临时存储 , 当达到某种条件后 , 再由这个容器发送给另一端 , 称为延迟消息通讯 ( 异步通信 )
      消息队列相关
      AMQP
      一个提供统一消息服务的应用层标准高级消息队列协议 , 是一个通用的应用层协议
      消息发送与接受的双方遵守这个协议可以实现异步通讯 . 这个协议约定了消息的格式和工作方式 .

      RabbitMq

      RabbitMQ 是一个实现了 AMQP(Advanced Message Queuing Protocol) 高级消息队列协议的消息队列服务 , 用 Erlang 语言 .

      Server(Broker): 接收客户端连接 , 实现 AMQP 协议的消息队列和路由功能的进程 .
      Virtual Host :虚拟主机的概念 , 类似权限控制组 , 一个 Virtual Host 里可以有多个 Exchange 和 Queue.
      Exchange: 交换机 , 接收生产者发送的消息 , 并根据 Routing Key 将消息路由到服务器中的队列 Queue.
      ExchangeType: 交换机类型决定了路由消息行为 ,RabbitMQ 中有三种类型 Exchange, 分别是 fanout 、 direct 、 topic.
      Message Queue :消息队列 , 用于存储还未被消费者消费的消息 .
      Message :由 Header 和 body 组成 ,Header 是由生产者添加的各种属性的集合 , 包括 Message 是否被持久化、优先级是多少、由哪个 Message Queue 接收等 .body 是真正需要发送的数据内
      容 .
      BindingKey :绑定关键字 , 将一个特定的 Exchange 和一个特定的 Queue 绑定起来

      一、Docker 安装部署 RabbitMQ

      注意获取镜像的时候要获取 management 版本的 , 不要获取 last 版本的 ,management 版本的才带有管理界面

      没有raabitmq文件夹的话新建一个

      --hostname :主机名 (RabbitMQ 的一个重要注意事项是它根据所谓的 “ 节点名称 ” 存储数据 , 默认为主机名 )
      -e :指定环境变量 :
      RABBITMQ_DEFAULT_VHOST :默认虚拟机名
      RABBITMQ_DEFAULT_USER :默认的用户名
      RABBITMQ_DEFAULT_PASS :默认用户名的密码

      springboot 连接配置

      添加一个新账户并添加权限

      springboot 项目搭建

      父项目

      pom.xml

      provider

      pom.xml

      comsuner

      pom.xml

      还要导一个依赖 连接消息列的依赖

      生产者 Provider

      新建俩个类

      RabbitConfig

      Sender

      编写测试类

      消费者 Consumer

      创建一个类 (接收者)

      开启启动类

      传入user数据

      provider

      user类

      生产者会报错 实现序列化接口就好了(implements)

      SimpleMessageConverter only supports String, byte[] and Serializable payloads, received: com.smy.provider.User

      SimpleMessageConverter仅支持字符串、字节[]和可序列化的有效载荷,接收:com。smy。供应商。使用者

      再次测试生产者,测试通过,但是接收者还是报错

      解决办法:

      1.写一个公共类dto把user放里面

      2.把user转成json发送,接收者接收json在转成对象

      provider

      ProviderApplicationTests

      运行测试类发送数据

      成功接收

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类