RabbitMQ:如何设置集群?

RabbitMQ:如何设置集群?,rabbitmq,Rabbitmq,我正在尝试在单台PC上设置RabbitMQ群集。 如何设置RabbitMQ群集?与localhost:15672类似,以澄清我的回答范围: 通过“单台PC”,我假设您希望在主机操作系统上运行所有节点,而不是在某种容器或虚拟机中运行 可能可以将这些RabbitMQ节点作为单独的Windows服务运行,但我不知道如何设置Windows服务,因此我将跳过这一部分,只讨论手动启动RabbitMQ。无论如何,在同一台主机上运行多个节点只与开发和测试目的相关,因此我认为这是好的 我不是Windows用户

我正在尝试在单台PC上设置RabbitMQ群集。

如何设置RabbitMQ群集?与localhost:15672类似,以澄清我的回答范围:

  • 通过“单台PC”,我假设您希望在主机操作系统上运行所有节点,而不是在某种容器或虚拟机中运行
  • 可能可以将这些RabbitMQ节点作为单独的Windows服务运行,但我不知道如何设置Windows服务,因此我将跳过这一部分,只讨论手动启动RabbitMQ。无论如何,在同一台主机上运行多个节点只与开发和测试目的相关,因此我认为这是好的
我不是Windows用户,因此下面的示例未经测试,可能包含错误。很抱歉,如果这不是现成的

步骤1:在单个主机上启动多个节点 要在同一主机上启动多个节点,无论您是否计划对它们进行群集,都必须为每个节点指定:

  • 唯一的名字
  • 专用侦听TCP端口
要做到这一点,您需要设置几个。例如,要启动两个节点:

  • 对于节点1:

    set RABBITMQ_NODENAME=rabbit1@%COMPUTERNAME%
    set RABBITMQ_NODE_PORT=5672
    
  • 对于节点2:

    set RABBITMQ_NODENAME=rabbit2@%COMPUTERNAME%
    set RABBITMQ_NODE_PORT=5673
    
每次要使用
rabbitmqctl
管理其中一个节点时,都必须指定其名称。例如,这将为您提供节点2的状态:

rabbitmqctl -n rabbit2@%COMPUTERNAME% status
RABBITMQ_NODE_PORT
的值是AMQP侦听TCP端口。在此示例中,节点1保留默认的AMQP端口5672,后续节点使用以下端口(5673等)。RabbitMQ自动从这些AMQP端口计算其他侦听端口:

  • 管理UI将侦听
    RABBITMQ_节点_端口
    +10000(例如,节点2为15673)。因此URL类似于
    http://myhost:15673/
  • Erlang分发将位于
    RABBITMQ_节点_端口上
    +20000(例如,节点2为25673)。此端口由
    rabbitmqctl
    使用,并用于集群后的节点间通信
步骤2:群集节点 现在已经有多个节点在运行,您可以像往常一样使用
rabbitmqctl
对这些节点进行集群:

rabbitmqctl -n rabbit2@%COMPUTERNAME% stop_app
rabbitmqctl -n rabbit2@%COMPUTERNAME% join_cluster rabbit1@%COMPUTERNAME%
rabbitmqctl -n rabbit2@%COMPUTERNAME% start_app

你试过什么?试过这个。