
RabbitMQ
文章平均质量分 57
喝一杯java
一天有86400秒,不要因为10秒不开心而放弃剩余的86390秒,今天的不开心到此为止,明天依然光芒万丈!
展开
-
RabbitMQ系列之利用nginx搭建MQ高可用集群
上一节学习了如何搭建RabbitMQ集群,实现了数据不丢失,那么我们在代码中配置时应该配置哪个节点呢?万一配置的节点宕机岂不是还是存在单点故障利用Nginx实现RabbitMQ集群负载修改nginx配置nginx.confhttp { #rabbit集群配合 upstream rabbitmq-cluster{ server 127.0.0.1:5672; server 127.0.0.1:5673; } server { listen 80; .原创 2021-09-27 15:43:45 · 1899 阅读 · 0 评论 -
搭建RabbitMQ集群报错:Authentication failed (rejected by the remote node), please check the Erlang cookie
原因:集群中节点未统一配置.erlang.cookie ,RabbitMQ的集群是依赖erlang集群,而erlang集群是通过cookie进行通信认证的解决方案:将各个节点.erlang.cookie中的cookie统一,用其中一个节点的cookie覆盖其他的cd /var/lib/rabbitmqvim .erlang.cookie修改之后,请重启机器...原创 2021-09-26 15:28:55 · 1646 阅读 · 0 评论 -
搭建RabbitMQ集群报错:rabbitmq unable to connect to epmd (port 4369) on xxx: address (cannot connect to hos
原因:找不到对应的hostName解决方案:在某节点中应配置所有节点的hostsvim /etc/hosts例如:172.17.0.3 rabbit1172.17.0.2 rabbit2原创 2021-09-26 15:24:45 · 1638 阅读 · 0 评论 -
RabbitMQ系列之集群搭建
RabbitMQ集群搭建RabbitMQ集群介绍rabbitmq有3种运行模式:单机模式单独运行一个rabbitmq普通集群模式默认模式,该模式并不能达到高可用的目的,以两个节点(rabbit01、rabbit02)为例来进行说明。对于Queue来说,消息实体只存在于其中一个节点rabbit01(或者rabbit02),rabbit01和rabbit02两个节点仅有相同的元数据,即队列的结构。当消息进入rabbit01节点的Queue后,consumer从rabbit02节点消费时,Rabbi原创 2021-09-26 13:46:55 · 464 阅读 · 0 评论 -
RabbitMQ系列之消息可靠性保障、消息幂等性保障
RabbitMQ应用问题消息可靠性保障消息补偿机制,100%确保消息发送成功图解:Producer处理业务并操作数据库,然后向Q1发送消息Consumer监听Q1中的消息,做对应的业务处理,并操作数据库,如果处理成功,向Q2发送消息回调检查服务监听Q2确认消息,将消费成功的记录写入MDB中(消费记录表)回调检查服务监听Q3延迟队列,收到消息后去MDB确认该消息是否成功消费,如果未成功消费,则调用Producer服务重新发送消息(流程从头再来),如果已成功消费则不作操作定时检查服务,每原创 2021-09-26 13:40:59 · 358 阅读 · 0 评论 -
RabbitMQ系列之消费限流、TTL、死信队列、延迟队列
RabbitMQ高级特性消费限流什么是消费端限流场景:假设MQ服务器接收很多未处理的消息,这些消息会瞬间打在消费者客户端,当接收到如此巨量的消息客户端是无法处理的,所以就需要在MQ和消费者之间做个限流,在消费者进行消费时限制消费流量解决方案:RabbitMQ提供了一种qos(服务质量保证)功能,在非自动确认消息的前提下,设置channel或queue的预处理流量,进而来限流,方法如下:void BasicQos(uint prefetchSize,ushort prefetchCount,原创 2021-09-26 13:38:22 · 360 阅读 · 0 评论 -
RabbitMQ系列之消息的可靠性
代码地址:https://gitee.com/webprogram/springboot_rabbit在使用RabbitMQ的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败的场景,RabbitMQ为我们提供了两种方式来控制消息的可靠性confirm确认模式,开机交换机应答return退回模式,开启队列应答RabbitMQ从生产到消费链路如下:producer-> rabbitmq broker->exchange->queue->consumer消息从生产.原创 2021-09-25 11:31:04 · 742 阅读 · 0 评论 -
RabbitMQ系列之springboot整合rabbitmq
前面章节学习都是基于spring,配置麻烦,现在生产中也没人那么使用,下面讲解基于springboot来操作MQ代码地址:https://gitee.com/webprogram/springboot_rabbitSpringBoot整合RabbitMQ引入依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId>原创 2021-09-25 11:28:54 · 113 阅读 · 0 评论 -
RabbitMQ系列之工作模式
RabbitMQ的工作模式Work queues 工作队列模式模式说明如图所示,一个队列对应多个消费者,C1和C2属于竞争关系,同一条消息要么被C1消费,要么被C2消费总结:Work queues多个消费端共同消费同一队列中的消息应用场景:对于任务过重或者任务较多情况下使用工作队列可以提高任务处理速度生产者public class MessageProducer { public static void sendMessage() throws IOException, Timeo原创 2021-09-19 18:38:43 · 241 阅读 · 0 评论 -
RabbitMQ系列之快速入门,Rabbit简单模式
RabbitMQ快速入门入门程序需求:使用简单模式完成消息传递步骤:创建工程(生产者、消费者)分别添加依赖编写消费者发送消息编写消费者接收消息创建maven项目,导入依赖 <!-- rabbitMq 客户端依赖 --> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client<原创 2021-09-19 18:32:14 · 175 阅读 · 0 评论 -
RabbitMQ系列之安装和配置
RabbitMQ的安装和配置RabbitMQ官网地址:https://www.rabbitmq.com/RabbitMQ下载地址:https://www.rabbitmq.com/download.html基于Windows安装:https://www.rabbitmq.com/install-windows.html因为RabbitMQ是基于erlang开发的,安装时要注意erlang版本,具体版本对应关系:https://www.rabbitmq.com/which-erlang.htmld原创 2021-09-19 18:29:45 · 147 阅读 · 0 评论 -
RabbitMQ系列之RabbitMQ简介
RabbitMQ简介AMQPAMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。类比HTTPRabbitMQ架构及概念RabbitMQ基础架构:RabbitMQ中的相关概念:Broker:接收和分发消息的应用,RabbitMQ Server就是Message原创 2021-09-19 18:26:43 · 198 阅读 · 0 评论 -
RabbitMQ系列之初识MQ
MQ的基本概念MQ概念MQ全程Message Queue(消息队列),是在消息的传输过程中保存消息的容器,多用于分布式系统之间进行通信。分布式系统两种通信方式:直接远程调用、借住第三方(MQ)完成间接通信消息的发送方称为生产者,接收方称为消费者MQ的优势和劣势优势应用解耦A系统只关注往MQ中发送消息,不关注后续链路处理,如果后续链路中的B系统挂了也不影响A系统的正常工作,当B系统重新启动后会去MQ消费之前发送的消息,提升系统容错性和可维护性异步提速由于各子系统解耦,所以A系原创 2021-09-19 18:22:55 · 132 阅读 · 0 评论 -
RabbitMQ消费者回调函数handleDelivery无法执行
RabbitMQ消费者回调函数handleDelivery无法执行,控制台无输出背景在一次学习rabbitmq时,创建了生产者、消费者,在消费者消费消息后在回调函数中打印相关信息,无法执行代码如下Consumer consumer = new DefaultConsumer(channel){ @Override public void handleDelivery(String consumerTag, Envelope envelope, AM原创 2021-09-19 14:35:36 · 2849 阅读 · 3 评论 -
Docker安装RabbitMQ启动后无法访问15672端口
记录一次通过docker安装RabbitMQ后无法访问web界面的问题rabbitmq默认web界面管理插件是关闭的,必须手动开启才能访问解决方案步骤一 进入RabbitMQ容器中docker exec -it rabbitmq-cxu /bin/bashrabbitmq-cxu为容器名称步骤二 启动rabbit管理插件rabbitmq-plugins enable rabbitmq_management浏览器访问: http://ip:15672,发现此时已经能成功访问到了.原创 2021-09-19 10:48:52 · 911 阅读 · 0 评论