生产环境使用Rabbitmq注意要点

1 使用场景

   生产者和消费者进行解耦。生产者和消费者节点独立动态扩展。


2 mq集群使用方式

   mq集群一般用于LAN,不便于在WAN中使用。mq本身对于分区问题解决的不好,会出现脑裂问题。mq处理脑裂问题默认采用ignore策略,在这种场景下,出现脑裂问题时,需要手工恢复。 可以修改脑裂问题的,mq集群的处理策略,让mq集群自行恢复。

 出现脑裂现象时,

1)mq日志会出现:

=ERROR REPORT==== 25-Feb-2015::20:04:25 ===

Mnesia('rabbit@ip-10-0-30-68'): ** ERROR ** mnesia_event got {inconsistent_database, running_partitioned_network, 'rabbit@ip-10-0-xx-xx'}

2)生产者和消费者不再正常处理

解决问题: 
   在出现问题的节点上执行:  sbin/rabbitmqctl stop_app 
   在出现问题的节点上执行:  sbin/rabbitmqctl start_app 
   如果mq集群包含两个节点时,只需要在一个节点上执行上述命令


3 mq集群不能采用kill -9 杀死进程,否则生产者和消费者不能及时识别mq的断连,会影响生产者和消费者正常的业务处理。


4 消费者停止时,需要平滑停止。否则会导致正在处理的消费数据一致性问题。

   可以接受kill -15命令或者业务听懂停止监听端口,在接受到停止命令时,首先取消消费者的订阅。


你可能感兴趣的:(生产环境使用Rabbitmq注意要点)