xiaoheiAh's blog
rabbitmq version: 3.7.15
sbin/rabbitmq-server
启动sbin/rabbitmq-server -detached
后台启动sbin/rabbitmqctl shutdown/stop
关闭/停止serversbin/rabbitmqctl status
检查server状态sbin/rabbitmq-plugins enable rabbitmq_management
开启控制台5672
15672
config
文件中声明节点信息DNS
发现AWS
实例发现(通过插件)kubernetes
发现(通过插件)consul
发现(通过插件)etcd
发现(通过插件)rabbitmqctl
节点名称是节点的身份识别证明.两部分组成: prefix
& hostname
.例如 [email protected]
的prefix
是 rabbit ,hostname
是 node1.messaging.svc.local.
集群中名称必须 唯一. 如果使用同一个hostname
那么prefix
要保持不一致
集群中,节点通过节点名称互相进行识别和通信.所以hostname
必须能解析.CLI Tools
也要使用节点名称.
单机运行多节点需要保证:
RABBITMQ_NODENAME
RABBITMQ_DIST_PORT
RABBITMQ_LOG_BASE
RABBITMQ_NODE_PORT
RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit rabbitmq-server -detached
RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=hare rabbitmq-server -detached
# 重置正在运行的节点
rabbitmqctl -n hare stop_app
# 加入集群
rabbitmqctl -n hare join_cluster [email protected]`hostname -s`
rabbitmqctl -n hare start_app
每个节点若配置有其他的插件.那么每个节点插件监听的端口不能冲突,例如添加控制台
# 首先开启控制台插件
./rabbitmq-plugins enable rabbitmq_management
RABBITMQ_NODE_PORT=5672 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15672}]" RABBITMQ_NODENAME=rabbit ./rabbitmq-server -detached
RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=hare ./rabbitmq-server -detached
# 加入rabbit节点生成集群
rabbitmqctl -n hare stop_app
# 加入集群
rabbitmqctl -n hare join_cluster [email protected]`hostname -s`
rabbitmqctl -n hare start_app
以上就建了带控制台的两个节点.
./rabbitmqctl -n rabbit2 join_cluster [email protected]`hostname -s`
Clustering node [email protected] with [email protected]
Error:
{:inconsistent_cluster, 'Node [email protected] thinks it\'s clustered with node [email protected], but [email protected] disagrees'}
集群残留的cluster
信息导致认证失败.删除${RABBIT_MQ_HOME}/var/lib/rabbitmq/mnesia
文件夹.再reset
节点
Clustering node [email protected] with [email protected]
Error:
{:corrupt_or_missing_cluster_files, {:error, :enoent}, {:error, :enoent}}
同上
15672
.没有解决2019-09-05 15:35:42.749 [error] <0.555.0> Failed to start Ranch listener rabbit_web_dispatch_sup_15672 in ranch_tcp:listen([{cacerts,'...'},{key,'...'},{cert,'...'},{port,15672}]) for reason eaddrinuse (address already in use)
topic
类型的exchange
,routing key
是按一定规则来的,通过.
连接,类似于正则.有两种符号:
*
代表一个单词#
代表0或多个单词如果 单单只有#
号, 那么topic exchange
就像fanout exchange
,如果没有使用*
和#
,那就是direct exchange
了.