自学内容网 自学内容网

RabbitMQ集群安装rabbitmq_delayed_message_exchange

1、单节点安装rabbitmq安装延迟队列

安装延迟队列rabbitmq_delayed_message_exchange可以参考这个文章: rabbitmq安装延迟队列-CSDN博客

2、集群安装rabbitmq_delayed_message_exchange

在第二个节点 join_cluster 之后,start_app 就会报错了

(CaseClauseError) no case clause matching: {:error, {:timeout_waiting_for_tables, [:rabbit@mq2, :rabbit@mq1], [:rabbit_delayed_messagerabbit@mq1, :rabbit_delayed_messagerabbit@mq1_index]}} 
(rabbitmqctl 3.8.0-dev) lib/rabbitmq/cli/plugins/plugins_helpers.ex:107: 
RabbitMQ.CLI.Plugins.Helpers.update_enabled_plugins/4 
(rabbitmqctl 3.8.0-dev) lib/rabbitmq/cli/plugins/commands/enable_command.ex:121: anonymous fn/6 in RabbitMQ.CLI.Plugins.Commands.EnableCommand.do_run/2
 (elixir 1.10.4) lib/stream.ex:1325: anonymous fn/2 in Stream.iterate/2 
(elixir 1.10.4) lib/stream.ex:1538: Stream.do_unfold/4 
(elixir 1.10.4) lib/stream.ex:1609: Enumerable.Stream.do_each/4 
(elixir 1.10.4) lib/stream.ex:956: Stream.do_enum_transform/7 
(elixir 1.10.4) lib/stream.ex:1609: Enumerable.Stream.do_each/4 
(elixir 1.10.4) lib/enum.ex:2161: Enum.reduce_while/3 {:case_clause, {:error, {:timeout_waiting_for_tables, [:rabbit@mq2, :rabbit@mq1], [:rabbit_delayed_messagerabbit@mq1, :rabbit_delayed_messagerabbit@mq1_index]}}}

找了很多资料最后发现原因是:rabbitmq_delayed_message_exchange插件需要用disc类型,集群的所有节点都需要改成disc类型

#将node2加入node1时,指定node2为内存节点(node2默认加入之后默认是ram节点)
rabbitmqctl join_cluster rabbit@node1 --ram
#若集群已搭建好,可以切换节点类型
rabbitmqctl change_cluster_node_type disc

第二个节点修改成 disc 节点之后,就可以start_app了。

结尾:自己做的一个免费好用的微信小程序,微信小程序二维码!


原文地址:https://blog.csdn.net/neterrrr/article/details/145241293

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!