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了。
生活中總是充滿了各種選擇,點餐糾結,出行選擇,聚餐座位,團隊投票結果不明,隨機抽簽一錘定音等等!我開發了一款【隨機選擇決定轉盤工具】微信小程序,無論是隨機抽選還是投硬幣,都能輕松搞定。現在通過微信小程序二維碼就能體驗!快來試試吧,讓選擇變得更簡單!