ActiveMQ 连接被拒绝
Posted
技术标签:
【中文标题】ActiveMQ 连接被拒绝【英文标题】:ActiveMQ connection refused 【发布时间】:2012-10-19 04:34:17 【问题描述】:我正在尝试在我的应用程序中使用activemq
,但是当我尝试连接到 localhost 时不断收到错误消息:
log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" org.springframework.jms.UncategorizedJmsException: Uncategorized exception occured during JMS processing; nested exception is javax.jms.JMSException: Could not connect to broker URL: tcp://localhost:61616. Reason: java.net.ConnectException: Connection refused
at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:316)
at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:168)
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:469)
at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:534)
at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:526)
at sender.MessageSender.sendMessage(MessageSender.java:16)
at sender.SenderMain.main(SenderMain.java:13)
Caused by: javax.jms.JMSException: Could not connect to broker URL: tcp://localhost:61616. Reason: java.net.ConnectException: Connection refused
at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:35)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:293)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:238)
at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:184)
at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:184)
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:456)
... 4 more
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
at java.net.Socket.connect(Socket.java:529)
at org.apache.activemq.transport.tcp.TcpTransport.connect(TcpTransport.java:504)
at org.apache.activemq.transport.tcp.TcpTransport.doStart(TcpTransport.java:467)
at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:55)
at org.apache.activemq.transport.AbstractInactivityMonitor.start(AbstractInactivityMonitor.java:132)
at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:58)
at org.apache.activemq.transport.WireFormatNegotiator.start(WireFormatNegotiator.java:72)
at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:58)
at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:58)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:273)
... 8 more
应该运行一个文件来启动它(活动 mq),这是 Windows 机器上的 .bat
文件。当你运行它时,它会启动,然后你让它在命令提示符下运行。
在家里我有一个 mac,使用 mac 等效 终端只打印:
Last login: Mon Oct 29 19:57:15 on ttys000
(null):~ rickilambert$ /Users/rickilambert/Downloads/apache-activemq-5.7.0/bin/macosx/activemq ; exit;
Usage: /Users/rickilambert/Downloads/apache-activemq-5.7.0/bin/macosx/activemq console | start | stop | restart | status | dump
logout
[Process completed]
谁能帮我把这个东西启动并运行起来?
【问题讨论】:
嗯,它准确地告诉你问题出在哪里。Usage:
不是建议。 activemq start
@BrianRoach 我认为 OP 正在展示他的 mac os 机器的用法,问题出在 windows 上。
@dan - 他正试图在他的 mac 上启动 activemq。他没有这样做,也没有忽略告诉他如何做的信息。而且由于他没有启动它,他的应用程序无法连接到它。
我是一个新的 mac 用户,对 windows 更熟悉,所以我不确定应该如何启动它
@SkyR - 阅读我的第一条评论。当你没有给它一个选项时,你收到的Usage:
消息。您必须将start
传递给它。
【参考方案1】:
您的应用程序无法连接到 activemq。检查您的 activemq 是否正在运行并在 localhost 61616 上侦听。
您可以尝试使用:netstat -a
来检查 activemq 进程是否已启动。或者尝试检查您是否可以使用管理页面访问您的 actvemq:localhost:8161/admin/queues.jsp
在 mac 上,您将使用以下命令启动您的 activemq:
$ACTMQ_HOME/bin/activemq start
或者,如果您的配置文件 (activemq.xml) 位于其他位置,您可以使用:
$ACTMQ_HOME/bin/activemq start xbean:file:$location_of_your_config_file
在您的情况下,可执行文件位于:bin/macosx/activemq
,因此您需要使用:$ACTMQ_HOME/bin/macosx/activemq start
【讨论】:
很抱歉让我感到很痛苦,但即使我没有文件,我也没有这样的文件或目录 @SkyR 刚才我注意到您的可执行文件位于:bin/macosx/activemq
。我更新了我的答案。
大声谢谢。这有点不同。它表明它现在正在运行,但我仍然得到相同的异常(null):macosx rickilambert$ ./activemq start Starting ActiveMQ Broker...
@SkyR 如果服务器已启动,您可以检查日志。您还可以使用我在回答中提供的 URL 检查服务器是否已启动。发出启动命令后,通常需要一两秒钟才能启动。【参考方案2】:
我在使用以下获取连接工厂时遇到了类似的问题
ConnectionFactory 工厂 = 新 ActiveMQConnectionFactory("admin","admin","tcp://:61616");
当我将其更改为以下时它已解决
ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://:61616");
然后下面显示我的 Q 尺寸正在增加..
http://:8161/admin/queues.jsp
【讨论】:
【参考方案3】:我也有类似的问题。在我的情况下,brokerUrl 配置不正确。所以这就是我收到以下错误的方式:
Cause: Error While attempting to add new Connection to the pool: nested exception is javax.jms.JMSException: Could not connect to broker URL : tcp://localhost:61616. Reason: java.net.ConnectException: Connection refused
&我按照以下方式解决了。
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
connectionFactory.setBrokerURL("tcp://hostname:61616");
connectionFactory.setUserName("admin");
connectionFactory.setPassword("admin");
【讨论】:
我不明白这是如何工作的。参考文档是这样说的:“如果存在代理,则会自动启动和配置嵌入式代理(前提是没有通过配置指定代理 URL)”但是您已经指定了代理 URL,因此这意味着 Spring Boot 不会启动嵌入式代理。您使用的是嵌入式代理吗? 阅读此文档:docs.spring.io/spring-boot/docs/current/reference/html/… 就我而言,我想运行我创建的实例。这就是我提供网址的原因。 spring.activemq.broker-url 没有提供然后spring boot实例化默认一个。 检查 1) Activemq 是否使用以下命令启动:netstat -a以上是关于ActiveMQ 连接被拒绝的主要内容,如果未能解决你的问题,请参考以下文章