1.消息可靠性
RabbitMQ消息可靠性
RabbitMQ的消息可靠性,一般是业务系统接入消息中间件时,首先要考虑的问题,一般通过三个方便保障:
发送可靠性:确保消息成功发送到Broker
存储可靠性:Broker对消息持久化,确保消息不会丢失
消费可靠性:确保消息成功被消费
(1)发送可靠性
一般消息发送可靠性分为三个层级:
At most once:最多一次,消息可能会丢失,但绝对不会重复传输。(几乎不用)
At last once:最少一次,消息绝对不会丢失,但可能会重复传输。(常用)
Exactly once:恰好一次,每条消息肯定会被传输一次且仅传输一次。(RabbitMQ中没有)
RabbitMQ支持其中的“最多一次”和“最少一次”。
其中“最少一次”投递实现需要考虑一下几个方面的内容:
-
消息生产者需要开启事务机制或者publisher confirm(更常用)机制,已确保消息可以可靠地传输到RabbitMQ中。
-
消息生产者需要配合使用mandatory参数或者备份交换器来确保消息能够从交换器路由到队列中,进而能够保存下来而不会被丢弃。
-
最多一次”的方式无须考虑以上那些方面,生产者随意发送,不过这样很难确保消息会成功发送。
(2)消费可靠性
消费者在消费消息的同时,需要将autoAck设置为flase,然后通过手动确认的方式去确认已经正确消费的消息,以免在消费端引起不必要的消息丢失。
死信队列:消息垃圾堆,本质上就是普通队列,收到NACK时,将异常消息放到死信队列里,可以查看哪些消息发生了异常,也可以通过一个消费者,来处理异常消息。
消息处理3种方式:正常收到;错误重发;放到死信队列。
2.RabbitMQ插件机制
RabbitMQ 支持插件,通过插件可以扩展多种核心功能:支持多种协议、系统状态监控、其他AMQP 0-9-1交换类型、节点联合等。许多功能都是通过插件实现的。
RabbitMQ内置一些插件,通过rabbitmq-plugins list命令可以查看插件列表。
可以通过rabbitmq-plugins命令启用或禁用插件
rabbitmq-plugins enable plugin-name
rabbitmq-plugins disable plugin-name
常用插件
rabbitmq_auth_mechanism_ssl
身份验证机制插件,允许RabbitMQ客户端使用X509证书和TLS(PKI)证书进行身份验证。
rabbitmq_event_exchange
事件分发插件,使客户端可以接受到Broker的queue.deleted、exchange.created、binding.created等事件
rabbitmq_management
基于Web界面的管理/监控插件
rabbitmq_management_agent
启用rabbitmq_management时,会自动启用此插件,用于在Web管理中查看集群节点。
rabbitmq_mqtt
MQTT插件,使RabbitMQ支持MQTT协议。
rabbitmq_web_mqtt
使RabbitMQ支持WebSocket订阅消息,基于MQTT协议传输。
来源:oschina
链接:https://my.oschina.net/u/4349018/blog/4436813