我有一对计算机与rabbitmq消息队列运行arch linux,我想用铲子将消息从第一台计算机上的队列移动到第二台计算机上的队列中。 不幸的是我似乎无法创build一个铲子,甚至不validation我的rabbitmq.config文件正在被读取。
计算机1有一个IP地址192.168.6.66
/etc/rabbitmq/rabbitmq-env.conf
NODENAME=bunny NODE_IP_ADDRESS=192.168.6.66 NODE_PORT=5672 LOG_BASE=/var/log/rabbitmq MNESIA_BASE=/var/lib/rabbitmq/mnesia RABBITMQ_PLUGINS_DIR=/usr/lib/rabbitmq/lib/rabbitmq_server-2.7.1/plugins
/etc/rabbitmq/rabbitmq.conf
[ {mnesia, [{dump_log_write_threshold, 100}]}, {bunny, [{vm_memory_high_watermark, 0.3}]}, {rabbitmq_shovel, [{shovels, [{test_shovel, [{sources, [{broker, "amqp://shoveluser:shoveluser@192.168.6.64:5672/"}]}, {destinations, [{broker, ""}]}, {queue, <<"observation2">>} ] }] }] } ].
计算机2有一个IP地址192.168.6.64
/etc/rabbitmq/rabbitmq-env.conf
NODENAME=bunny NODE_IP_ADDRESS=0.0.0.0 NODE_PORT=5672 LOG_BASE=/var/log/rabbitmq MNESIA_BASE=/var/lib/rabbitmq/mnesia RABBITMQ_PLUGINS_DIR=/usr/lib/rabbitmq/lib/rabbitmq_server-2.7.1/plugins
当我重新启动计算机1上的rabbitmq-server时,输出如下:
[root@test_toshiba ~]# /etc/rc.d/rabbitmq-server restart :: Stopping rabbitmq-server daemon [BUSY] Stopping and halting node bunny@localhost ... ...done. [DONE] :: Starting rabbitmq-server daemon [BUSY] Activating RabbitMQ plugins ... ******************************************************************************** ******************************************************************************** 9 plugins activated: * amqp_client-2.7.1 * erlando-2.7.1 * mochiweb-1.3-rmq2.7.1-git * rabbitmq_management-2.7.1 * rabbitmq_management_agent-2.7.1 * rabbitmq_mochiweb-2.7.1 * rabbitmq_shovel-2.7.1 * rabbitmq_shovel_management-2.7.1 * webmachine-1.7.0-rmq2.7.1-hg
我期望看到这个“configuration文件:/etc/rabbitmq/rabbitmq.config”这里给出了configuration文件的说明文档
在rabbitmq-server启动后,我运行这个命令并没有看到铲子:
[root@test_toshiba ~]# rabbitmqctl eval 'rabbit_shovel_status:status().' [] ...done.
这是rabbitmq状态
[root@test_toshiba ~]# rabbitmqctl status Status of node bunny@localhost ... [{pid,14225}, {running_applications, [{rabbitmq_shovel,"Data Shovel for RabbitMQ","2.7.1"}, {erlando,"Syntax extensions for Erlang","2.7.1"}, {rabbitmq_shovel_management,"Shovel Status","2.7.1"}, {rabbitmq_management,"RabbitMQ Management Console","2.7.1"}, {rabbitmq_management_agent,"RabbitMQ Management Agent","2.7.1"}, {amqp_client,"RabbitMQ AMQP Client","2.7.1"}, {rabbit,"RabbitMQ","2.7.1"}, {os_mon,"CPO CXC 138 46","2.2.9"}, {sasl,"SASL CXC 138 11","2.2.1"}, {rabbitmq_mochiweb,"RabbitMQ Mochiweb Embedding","2.7.1"}, {webmachine,"webmachine","1.7.0-rmq2.7.1-hg"}, {mochiweb,"MochiMedia Web Server","1.3-rmq2.7.1-git"}, {inets,"INETS CXC 138 49","5.9"}, {mnesia,"MNESIA CXC 138 12","4.7"}, {stdlib,"ERTS CXC 138 10","1.18.1"}, {kernel,"ERTS CXC 138 10","2.15.1"}]}, {os,{unix,linux}}, {erlang_version, "Erlang R15B01 (erts-5.9.1) [source] [smp:4:4] [async-threads:30] [hipe] [kernel-poll:true]\n"}, {memory, [{total,18530752}, {processes,6813815}, {processes_used,6813800}, {system,11716937}, {atom,428361}, {atom_used,414658}, {binary,182176}, {code,8197217}, {ets,911776}]}, {vm_memory_high_watermark,0.39999999942574066}, {vm_memory_limit,417929625}] ...done.
/ var / log / rabbitmq中的日志没有任何错误消息。
我如何validation我的configuration文件正在使用,为什么我的铲子不会启动?
您需要为铲子定义一个目的地。
[{mnesia,[{dump_log_write_threshold,100}]}, {兔子,[{vm_memory_high_watermark,0.3}]}, {rabbitmq_shovel, [{铲子, [{test_shovel, [{sources,[{broker,“amqp:// shoveluser:shoveluser@192.168.6.64:5672 /”}]}, {destinations,[{broker,“amqp:// shoveluser:shoveluser@192.168.6.66:5672 /”}]}, {queue,>} ] }] }] } ]。
我认为“”并不足以指定本地代理(在“目标”中)。 我相信,“amqp://”是必需的。
所以,你的目的地的术语应该是:
{destinations,[{broker,“amqp://”}]}
指定本地经纪人的用户名和主机名(另一个答案)也可能工作,但我不认为这是必要的。