无法连接Spring AMQP/Rabbit MQ:org.springframework.amqp.AmqpConnectException:java.net.ConnectException:连接被拒绝:连接

Amo*_*mar 13 rabbitmq spring-amqp spring-rabbitmq

我是Spring AMQP/Rabbit MQ的新手.

我在我的项目中使用Spring AMQP/Rabbit MQ.运行tomcat后我遇到以下错误:

org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer - 消费者引发异常,如果连接工厂支持,则处理可以重新启动.

异常摘要:org.springframework.amqp.AmqpConnectException:java.net.ConnectException:连接被拒绝:连接

以下是配置文件:

弹簧amqp.xml

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:rabbit="http://www.springframework.org/schema/rabbit"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/rabbit        http://www.springframework.org/schema/rabbit/spring-rabbit.xsd">

    <rabbit:connection-factory id="connectionFactory" host="127.0.0.1"/>
    <rabbit:admin connection-factory="connectionFactory"/>

    <rabbit:template connection-factory="connectionFactory" id="rabbitTemplate" channel-transacted="true"/>
    <rabbit:queue name="proposalQueue" />

    <rabbit:listener-container connection-factory="connectionFactory">
        <rabbit:listener ref="listener" queue-names="proposalQueue"/>
    </rabbit:listener-container>

    <bean id="rabbitMQTransactionManager" class="org.springframework.amqp.rabbit.transaction.RabbitTransactionManager">
        <property name="connectionFactory" ref="connectionFactory"/>
    </bean>

    <rabbit:direct-exchange name="myExchange">
        <rabbit:bindings>
             <rabbit:binding queue="proposalQueue" key="userMesssage" />
        </rabbit:bindings>
    </rabbit:direct-exchange>
    <bean id="listener" class="com.xxx.xxxx.rabbitmq.QueueServer"/>
 </beans>
Run Code Online (Sandbox Code Playgroud)

QueueServer.java

@Override
    public void onMessage(Message message) {

    Map<String, Object> result = new HashMap<>();       
    MessageProperties props = message.getMessageProperties();
    BasicProperties replyProps = new BasicProperties.Builder().correlationId(new String(message.getMessageProperties().getCorrelationId())).build();
    String inputParameterStr = new String(message.getBody());

        try {
            Map<String,Object> inputParameters  = (Map<String, Object>) Utility.StringToObject(inputParameterStr, "java.util.Map");
            result = service.createQueue(inputParameters);

        } catch (ClassNotFoundException e) {
            logger.error("Error :::: "+getClass()+proposalID, e);
            result.put(Constants.FAILURE, e.getMessage());
        } catch (Exception e) {
            logger.error("Error :::: "+getClass()+proposalID, e);
            result.put(Constants.FAILURE, e.getMessage());
        }
    }
Run Code Online (Sandbox Code Playgroud)

请帮忙解决.

Gar*_*ell 13

java.net.ConnectException:连接被拒绝:连接

这仅仅意味着RabbitMQ的是没有运行localhost(127.0.0.1标准端口(5672)上).

你下载并安装/运行RabbitMQ了吗?它与ActiveMQ不同 - 它无法在java应用程序中嵌入.

  • 嗯,它显然没有监听端口 5672(默认)。尝试`netstat -ano | 在`cmd`窗口中找到“5672”;如果它实际上正在监听,您应该看到“127.0.0.1:5672 ... LISTENING”。查看rabbitmq日志,看看是否有信息。 (3认同)
  • 是.RabbitMQ(3.5.6)和ERLANG(otp_win32_18.1.exe)安装在c:.RabbitMQ服务的状态开始. (2认同)

Atu*_*ain 8

检查主机和端口值

在应用程序属性中

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请参阅 RabbitMQ 站点在端口 15672 上运行,而在代码中使用 amqp 协议。