rabbitMQ相关问题

风流意气都作罢 提交于 2020-02-26 02:08:32

1.什么是rabbitMQ

    采用AMQP高级消息队列协议的一种消息队列技术,最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦合;

2.为什么要使用rabbitMQ

    在分布式系统下具备异步,削峰,负载均衡等一系列高级功能;

    拥有持久化的机制,进程消息,队列中的信息也可以保存下来;

    实现消费者和生产者之间的解耦;

    对于高并发场景下,利用消息队列可以使得同步访问变为串行访问达到一定量的限流,利于数据库的操作;

    可以使用消息队列达到异步下单的效果,排队中,后台进行逻辑下单;

3.使用rabbitmq的场景

    服务间异步通信;

    顺序消费;

    定时任务;

    请求削峰;

4.如何确保消息正确的发送至rabbitMQ?如何确保消息接收方消费了消息?

    发送方确认模式

        将信道设值成confirm模式(发送方确认模式),则所有在信道上发布的消息都会被指派一个唯一的ID。一旦消息被投递到目的队列后,或者消息被写入磁盘后(可持久化消息),信道会发送一个确认给生产者(包含消息唯一ID)。如果rabbitMQ发生内部错误从而导致消息丢失,会发送一条nack(notacknowledged,未确认)消息。发送方确认模式是异步的,生产者应用程序在等待确认的同时,可以继续发送消息。当确认消息到达生产者应用程序,生产者应用程序的回调方法就会被触发来处理确认消息;

    接收方确认机制

        消费者接收每一条消息后都必须进行确认(消息接收和消息确认是两个不同操作)。只有消费者确认了消息,rabbitMQ才能安全的把消息从队列中删除,这里并没有用到超时机制,rabbitMQ仅通过consumer的连接中断来确认是否需要重新发送消息。也就是说,只要连接不中断,rabbitMQ给了consumer足够长的时间来处理消息。保证数据的最终一致性;

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!