随笔分类 - RabbitMQ
摘要:现象 部署在阿里云上的2台RabbitMQ主从,访问management页面时出现如下所示的内容: 查看其中一个mq的日志,发现如下内容: 00:06:32.423 [warning] <0.505.0> epmd does not know us, re-registering rabbit at
阅读全文
摘要:RabbitMQ要对外提供服务,考虑到安全性,配置SSL进行访问,ssl端口5671,内部仍然使用5672进行访问,两者同时兼容。 安装环境 CentOS 7.5 Docker 1.13.1 Git 1.8.3 jdk 1.8 RabbitMQ镜像,rabbitmq:management 证书 Ra
阅读全文
摘要:问题 最近在使用RabbitMq时遇到了一个问题,明明是转换成json发送到mq中的数据,消费者接收到的却是一串数字也就是byte数组,但是使用mq可视化页面查看数据却是正常的,之前在使用过程中从未遇到过这种情况,遇到的情况如下所示: 生产者发送消息的代码如下所示: public void send
阅读全文
摘要:死信队列是什么 死信,Dead Letter,一种消息机制,当消费者去消费队列中的消息时,如果队列中的消息出现了以下的情况: 消费端执行nack或者reject时,设置requeue=false; 消息在队列中的时间超过设置的TTL(Time To Live)时间; 队列中消息的数量超过设置的最大数
阅读全文
摘要:消费端在处理消息过程中可能会报错,此时该如何重新处理消息呢?解决方案有以下两种。 在redis或者数据库中记录重试次数,达到最大重试次数以后消息进入死信队列或者其他队列,再单独针对这些消息进行处理; 使用spring-rabbit中自带的retry功能; 第一种方案我们就不再详细说了,我们主要来看一
阅读全文
摘要:消息的可靠性投递是使用消息中间件不可避免的问题,不管是使用kafka、rocketMQ或者rabbitMQ,那么在RabbitMQ中如何保证消息的可靠性投递呢? 先再看一下RabbitMQ消息传递的流程图: 从上面的图可以看到,消息的投递有三个对象参与: 生产者 RabbitMQ(broker) 消
阅读全文
摘要:RabbitMQ中,生产者并不是直接将消息发送给queue,而是先将消息发送给exchange,再由exchange通过不同的路由规则将消息路由到绑定的队列中进行存储,那么为什么要先将消息发送给exchange而不是直接发送给queue呢? 理解Exchange 为什么要在生产者和queue之间多一
阅读全文
摘要:前面我们已经了解了RabbitMQ的一些基本概念和原理,今天进入实战篇,在springboot框架中集成RabbitMQ,默认已经创建一个Springboot项目。 添加pom依赖 在pom.xml文件中引入以下依赖: <dependency> <groupId>org.springframewor
阅读全文
摘要:AMQP协议 AMQP: Advanced Message Queue,高级队列协议。 特征: 这是一个在进程间传递异步消息的网络协议,因此数据的发送方、接收方以及容器(MQ)都可以在不同的设备上。 主要特征是面向消息、队列、灵活的路由、可靠性、安全性等 支持符合要求的客户端和消息中间件代理之间进行
阅读全文
摘要:环境准备 Centos 7.5虚拟机三台: 192.168.102.128 192.168.102.130 192.168.102.131 以上虚拟机统一安装docker环境 三台机器分别配置如下所示的hosts文件,以供rabbitmq容器使用 $ vim /home/rabbitmq/hosts
阅读全文
摘要:环境准备 Centos 7.5 docker环境 安装步骤 拉取镜像 $ docker pull rabbitmq:management 说明: 获取rabbiymq镜像的时候要记得获取management版本,不要获取last版本的,只有management版本才带有管理界面,方便进行可视化操作。
阅读全文