【发布时间】:2021-11-23 19:02:27
【问题描述】:
我正在测试一个非常简单的场景,我正在我的计算机上本地运行的独立服务器上运行位于examples/jms/queue 下的测试并成功。在 dockerized HornetQ 2.4.0 上运行相同的程序给了我错误:
连接被拒绝:连接
我确定打开了 1099 端口,我可以看到端口打开了,
0.0.0.0:1099->1099/tcp
Telnet-ing 到 localhost 1099 给出了一个乱码结果,这意味着那里有一些东西正在监听但运行连接到 jnp://localhost:1099 的测试,正如我所说的它失败了。
终于hornetq-beans.xml的配置:
<bean name="StandaloneServer" class="org.hornetq.jms.server.impl.StandaloneNamingServer">
<constructor>
<parameter>
<inject bean="HornetQServer"/>
</parameter>
</constructor>
<property name="port">1099</property>
<property name="bindAddress">0.0.0.0</property>
<property name="rmiPort">1098</property>
<property name="rmiBindAddress">0.0.0.0</property>
</bean>
netstat -plunt 的结果:
# netstat -plunt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:5445 0.0.0.0:* LISTEN 10/java
tcp 0 0 0.0.0.0:1098 0.0.0.0:* LISTEN 10/java
tcp 0 0 0.0.0.0:1099 0.0.0.0:* LISTEN 10/java
tcp 0 0 0.0.0.0:39437 0.0.0.0:* LISTEN 10/java
tcp 0 0 0.0.0.0:5455 0.0.0.0:* LISTEN 10/java
我的 Dockerfile:
FROM openjdk:8
WORKDIR /app
COPY ./hornetq-2.4.0.Final .
EXPOSE 1099 1098 5445 5455
ENTRYPOINT [ "/bin/bash", "-c", "cd bin/; ./run.sh" ]
hornetq-configuration.xml的更新部分:
<connectors>
<connector name="netty">
<factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-class>
<param key="host" value="0.0.0.0"/>
<param key="port" value="5445"/>
</connector>
<connector name="netty-throughput">
<factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-class>
<param key="host" value="0.0.0.0"/>
<param key="port" value="5455"/>
<param key="batch-delay" value="50"/>
</connector>
</connectors>
<acceptors>
<acceptor name="netty">
<factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</factory-class>
<param key="host" value="0.0.0.0"/>
<param key="port" value="5445"/>
</acceptor>
<acceptor name="netty-throughput">
<factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</factory-class>
<param key="host" value="0.0.0.0"/>
<param key="port" value="5455"/>
<param key="batch-delay" value="50"/>
<param key="direct-deliver" value="false"/>
</acceptor>
</acceptors>
hornetq-beans.xml的更新部分:
<bean name="StandaloneServer" class="org.hornetq.jms.server.impl.StandaloneNamingServer">
<constructor>
<parameter>
<inject bean="HornetQServer"/>
</parameter>
</constructor>
<property name="port">1099</property>
<property name="bindAddress">0.0.0.0</property>
<property name="rmiPort">1098</property>
<property name="rmiBindAddress">0.0.0.0</property>
</bean>
我用来运行镜像的命令是:
docker run -d -p 1098:1098 -p 1099:1099 -p 5445:5445 -p 5455:5455 hornetq
【问题讨论】:
-
当你运行 `docker logs 来获取容器日志时,你得到了什么?
-
@JustinBertram 仅打开 1099 给我“连接被拒绝”,打开 1099、1098、5445、5455 给我一个“无法创建会话工厂”。
-
@NoamYizraeli 我得到“服务器现已上线”日志。
-
如果容器中有
netstat,请运行netstat -plunt并检查正在监听哪些端口(或您拥有的其他网络命令) -
@NoamYizraeli 我编辑了我的问题以添加命令的结果。我在运行测试时看到的另一个错误是“ERROR: HQ214016: Failed to create netty connection”