出于测试目的,我需要在同一台Windows机器上运行ActiveMQ和RabbitMQ。我已经安装了,但我不能一起运行它们:我需要停止一个服务才能让另一个服务运行。
这是我尝试启动运行ActiveMQ的RabbitMQ的错误:
=INFO REPORT==== 17-Feb-2015::14:24:00 ===
Error description:
{could_not_start,rabbit,
{bad_return,
{{rabbit,start,[normal,[]]},
{'EXIT',
{rabbit,failure_during_boot,
{boot_step,networking,
{case_clause,
{error,
{{shutdown,
{failed_to_start_child,tcp_listener,
{cannot_listen,{0,0,0,0,0,0,0,0},5672,eacces}}},
{child,undefined,'rabbit_tcp_listener_sup_:::5672',
{tcp_listener_sup,start_link,
[{0,0,0,0,0,0,0,0},
5672,
[inet6,binary,
{packet,raw},
{reuseaddr,true},
{backlog,128},
{nodelay,true},
{linger,{true,0}},
{exit_on_close,false}],
{rabbit_networking,tcp_listener_started,[amqp]},
{rabbit_networking,tcp_listener_stopped,[amqp]},
{rabbit_networking,start_client,[]},
"TCP Listener"]},
transient,infinity,supervisor,
[tcp_listener_sup]}}}}}}}}}}
这是我试图在RabbitMQ已经运行的情况下启动ActiveMQ的错误:
jvm 1 | INFO | Listening for connections at: tcp://BROKER:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600
jvm 1 | INFO | Connector openwire started
jvm 1 | ERROR | Failed to start Apache ActiveMQ ([localhost, ID:DEV-BROKER01-56290-1424197666199-0:1], java.io.IOException: Transport Connector could not be registered in JMX: java.io.IOException: Failed to bind to server socket: amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600 due to:
java.net.BindException: Address already in use: JVM_Bind)
jvm 1 | INFO | Apache ActiveMQ 5.11.0 (localhost, ID:DEV-BROKER01-56290-1424197666199-0:1) is shutting down
那个"地址已经在使用"是我猜的关键。
有什么方法可以解决这个问题吗?感谢
答案 0 :(得分:8)
这是问题所在: java.net.BindException:已在使用的地址:JVM_Bind)
两个代理都使用5672
端口(amqp默认端口)。
只需更改一个代理的端口,例如在rabbitmq中检查此链接: https://www.rabbitmq.com/configure.html
配置文件rabbitmq.config允许RabbitMQ核心 应用程序,Erlang服务和RabbitMQ插件进行配置。它 是一个标准的Erlang配置文件,记录在Erlang上 Config Man Page。
示例配置文件如下:
[
{rabbit, [{tcp_listeners, [5673]}]}
].
本例将RabbitMQ端口从5672监听到5673.
此配置文件与rabbitmq-env.conf不同 可用于在非Windows系统上设置环境变量。