在Amazon VPC中,在两个节点上我安装了rabbitmq
在节点1上,我运行了以下命令
#Node 1
/etc/init.d/rabbitmq-server stop
rabbitmq-server -detached
rabbitmqctl start_app
rabbitmqctl set_policy HA '^(?!amq\.).*' '{"ha-mode": "all"}'
在节点2上,我运行以下命令来设置集群
/etc/init.d/rabbitmq-server stop
rabbitmq-server -detached
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@<PrivateIP>
rabbitmqctl start_app
rabbitmqctl set_policy HA '^(?!amq\.).*' '{"ha-mode": "all"}'
RabbitMQ节点位于Elastic Load Balancer后面。我运行了一个java程序来继续将消息推送到rabbitmq。
案例1:rabbitmqctl list-queues - 显示当java程序将消息推送到队列时,淬灭和队列消息计数相同。
案例2:我在节点2上停止了rabbitmq然后再次启动它。检查群集状态和队列消息计数。消息计数正确(节点1和节点2都为3330)
案例3:当java程序将消息推送到队列时,我在节点1上停止了rabbitmq。 我检查了节点2中的队列消息计数,计数为70。 我在节点1上启动了rabbitmq,然后检查了队列计数是75。
我想设置一个rabbitmq高可用性集群,确保没有消息丢失。我在/etc/init.d/rabbitmq-server上启用了rabitmq启动时的sync_queue。
感谢您是否可以指出,为什么消息计数从大约3330降至70.此外,还有什么是设置和确保HA的最佳方式。
答案 0 :(得分:2)
一些提示:
答案 1 :(得分:1)
如果您不想丢失消息,则应考虑使用税务交易
channel.txSelect();
channel.basicPublish("", youQueue, MessageProperties.PERSISTENT_TEXT_PLAIN,
message.getBytes());
channel.txCommit();
如果你的消息率很高,这可能会导致性能下降。
访问 http://www.rabbitmq.com/blog/2011/02/10/introducing-publisher-confirms/