如何修复连接到rabbitMQ的Spring AMQP中的AmqpTimeoutException

如何修复连接到rabbitMQ的Spring AMQP中的AmqpTimeoutException,rabbitmq,spring-amqp,Rabbitmq,Spring Amqp,我使用RabbitMQ代理(在Mac OS上)编写了一个基于Spring AMQP的应用程序。我已经启动了rabbitMQ的服务器,可以通过管理控制台访问它。但是当我的Spring应用程序尝试连接队列时,它会得到AmqpTimeoutException。请帮我解决这个问题,我别无选择 重要的是:在RabbitMQ ping期间,我的Spring应用程序建立了几次连接,但这似乎是巧合。所以我主要怀疑的是超时设置,但我无法定义它们中的哪一个 我试图增加双方握手的超时时间。此外,我还尝试了不同的连接设

我使用RabbitMQ代理(在Mac OS上)编写了一个基于Spring AMQP的应用程序。我已经启动了rabbitMQ的服务器,可以通过管理控制台访问它。但是当我的Spring应用程序尝试连接队列时,它会得到
AmqpTimeoutException
。请帮我解决这个问题,我别无选择

重要的是:在RabbitMQ ping期间,我的Spring应用程序建立了几次连接,但这似乎是巧合。所以我主要怀疑的是超时设置,但我无法定义它们中的哪一个

我试图增加双方握手的超时时间。此外,我还尝试了不同的连接设置:我将用户从guest更改为test,将主机从127.0.0.1更改为localhost(它给出了“拒绝连接”)

RabbitMQ:3.7.16, Spring AMQP:AMQP-client-5.1.2, 弹簧兔:弹簧兔-2.0.2.RELEASE

My
rabbitmq.config

[{rabbit,[{loopback\u users,[]}]}]。

侦听器
rabbitmqctl状态

     [{clustering,25672,"::"},
      {amqp,5672,"127.0.0.1"},
      {stomp,61613,"::"},
      {mqtt,1883,"::"},
      {http,15672,"::"}]}
港口情况

Nmap scan report for localhost (127.0.0.1)
Host is up (0.00037s latency).

PORT     STATE SERVICE
5672/tcp open  amqp
application.properties

spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
代码非常简单:

弹簧配置

@Configuration
public class AppConfing {
    @Bean
    public Queue queue() {
        return new Queue("hello");
    }
}
和队列收件人

@Component
public class Receiver {
    @RabbitListener(queues = "hello")
    public void receive(String in) {
        System.out.println(" [x] Received '" + in + "'");
    }
}
错误:

2019-07-26 13:35:47.517  INFO 89793 --- [cTaskExecutor-1] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: [127.0.0.1:5672]
2019-07-26 13:35:52.533  WARN 89793 --- [ 127.0.0.1:5672] c.r.c.impl.ForgivingExceptionHandler     : An unexpected connection driver error occured (Exception message: Socket closed)
2019-07-26 13:35:52.538 ERROR 89793 --- [cTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer : Failed to check/redeclare auto-delete queue(s).

org.springframework.amqp.AmqpTimeoutException: java.util.concurrent.TimeoutException
    at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:74) ~[spring-rabbit-2.0.2.RELEASE.jar:2.0.2.RELEASE]
    at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:476) ~[spring-rabbit-2.0.2.RELEASE.jar:2.0.2.RELEASE]
    at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:614) ~[spring-rabbit-2.0.2.RELEASE.jar:2.0.2.RELEASE]
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.createConnection(ConnectionFactoryUtils.java:240) ~[spring-rabbit-2.0.2.RELEASE.jar:2.0.2.RELEASE]
    at org.springframework.amqp.rabbit.core.RabbitTemplate.doExecute(RabbitTemplate.java:1810) ~[spring-rabbit-2.0.2.RELEASE.jar:2.0.2.RELEASE]
    at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:1784) ~[spring-rabbit-2.0.2.RELEASE.jar:2.0.2.RELEASE]
    at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:1765) ~[spring-rabbit-2.0.2.RELEASE.jar:2.0.2.RELEASE]
    at org.springframework.amqp.rabbit.core.RabbitAdmin.getQueueProperties(RabbitAdmin.java:324) ~[spring-rabbit-2.0.2.RELEASE.jar:2.0.2.RELEASE]
    at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.redeclareElementsIfNecessary(AbstractMessageListenerContainer.java:1604) ~[spring-rabbit-2.0.2.RELEASE.jar:2.0.2.RELEASE]
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:963) [spring-rabbit-2.0.2.RELEASE.jar:2.0.2.RELEASE]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_60]
Caused by: java.util.concurrent.TimeoutException: null
    at com.rabbitmq.utility.BlockingCell.get(BlockingCell.java:77) ~[amqp-client-5.1.2.jar:5.1.2]
    at com.rabbitmq.utility.BlockingCell.uninterruptibleGet(BlockingCell.java:120) ~[amqp-client-5.1.2.jar:5.1.2]
    at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:36) ~[amqp-client-5.1.2.jar:5.1.2]
    at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:494) ~[amqp-client-5.1.2.jar:5.1.2]
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:306) ~[amqp-client-5.1.2.jar:5.1.2]
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:957) ~[amqp-client-5.1.2.jar:5.1.2]
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:907) ~[amqp-client-5.1.2.jar:5.1.2]
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:847) ~[amqp-client-5.1.2.jar:5.1.2]
    at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:449) ~[spring-rabbit-2.0.2.RELEASE.jar:2.0.2.RELEASE]
    ... 9 common frames omitted
此外,我在RabbitMQ的日志中看到,Spring应用程序会断开连接:

2019-07-26 13:43:12.578 [warning] <0.4166.0> closing AMQP connection <0.4166.0> (127.0.0.1:50546 -> 127.0.0.1:5672):
client unexpectedly closed TCP connection
2019-07-26 13:43:12.578[警告]正在关闭AMQP连接(127.0.0.1:50546->127.0.0.1:5672):
客户端意外地关闭了TCP连接