![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
RabbitMq
文章平均质量分 64
才_先生
这个作者很懒,什么都没留下…
展开
-
rabbitMq发布确认
rabbitMq存在消息丢失的风险,包括生产者消息丢失,服务器消息丢失,消费者消息丢失这3种情况。批量消息的发布确认其实和单条消息的确认方案非常像,只是在消息确认的时候是以一个批次多条消息的方式进行确认。但这种方式有一个缺点一旦消息发布确认结果是失败的,就只能知道是这个批次中有某些消息是未发送到Broker,但不知道具体是哪条消息。消息发布确认主要包括单条消息发布确认,批量消息发布确认,消息异步确认这三种方案,在工作中选择使用消息异步确认的方案是最多最常用的。原创 2023-01-29 21:57:03 · 456 阅读 · 0 评论 -
RabbitMq生产者发送消息确认
一般情况下RabbitMq的生产者能够正常的把消息投递到交换机Exchange,Exchange能够根据路由键routingKey把消息投递到队列Queue,但是一旦出现消息无法投递到交换机Exchange,或无法路由到Queue的这种特殊情况下,则需要对生产者的消息进行缓存或者保存到数据库,后续在调查完RabbitMq服务器的问题之后,待RabbitMq服务器正常之后,需要对这些消息进行重新投递。当项目启动后,然后把交换机Exchange删除后,然后生产者发送消息时会提示交换机不存在。原创 2023-01-29 21:43:46 · 2259 阅读 · 0 评论 -
RabbitMq死信队列
死信队列是指消息被投递到队列后,由于各种原因导致队列中的消息无法被消费掉,这样的消息如果没有后续处理就变成了死信,有死信自然就有了死信队列。如果是固定的过期时间则可以通过队列设置过期时间的方式实现。当过期时间不固定且有很多的过期时间且不希望有过多的过期队列时则可以使用插件的方式(rabbitmq_delayed_message_exchange插件)实现延迟队列的效果。一定不能通过设置生产者的过期时间来实现消息的任意过期时间的目的,否则就会出现我们示例中的问题。原创 2023-01-25 21:47:32 · 1412 阅读 · 0 评论 -
RabbitMq交换机Exchange
RabbitMq中的生产者的消息不是直接发送到队列中供消费者消费的,而是发到Exchange交换器。然后通过Exchange交换机中的路由规则routingKey来决定消息是发送到哪个队列中。原创 2023-01-21 20:35:38 · 287 阅读 · 0 评论 -
rabbitMq持久化
rabbitMq持久化分为队列持久化、消息持久化和交换器持久化。如果不开启持久化,则消息和队列只在内存中,当rabbitMq服务器故障重启后,会导致消息丢失。开启了持久化,队列和消息会保存到硬盘上,服务器重启后依然能找到消息。原创 2023-01-21 20:33:57 · 453 阅读 · 0 评论 -
rabbitMq不公平分发
rabbitMq默认是公平分发的,即轮询分发,有多少个消费者,多少个消费者平均消费消费。具体例子请看我之前写的文章《rabbitMq消息应答--ack机制》。但是在工作中,我们希望消费速度快的机器就消费更多的消息。这时候我们可以在消费者设置channel.basicQos(1);不公平分发,来让消费速度快的消费者消费更多的消息。原创 2023-01-07 21:58:15 · 434 阅读 · 0 评论 -
rabbitMq消息应答--ack机制
消费者完成一个任务可能需要一段时间,如果其中一个消费者处理一个长的任务并仅只完成了部分突然它挂掉了,会导致消息丢失。RabbitMq可以通过消费者在消费完消息后再手动应答(ack机制)的方式通知Broker服务端消息已经消费完。原创 2023-01-07 21:56:10 · 2169 阅读 · 0 评论 -
rabbitMq入门
RabbitMq是一个非常常用的MQ消息队列,RabbitMq实现了AMQP协议。本文简单的介绍一下amqp-client客户端实现一个简单的生产者和消费者示例。原创 2023-01-07 21:50:40 · 76 阅读 · 0 评论