运行失败,如何解决,每次报错都不知道从何下手怎么办!!!

运行失败,如何解决,每次报错都不知道从何下手怎么办!!!

https://img1.sycdn.imooc.com//climg/653bcd68095b9ff023561266.jpg



pom.xml 文件


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.imooc</groupId>
    <artifactId>spring-boot-rabbitmq-consumer-new</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-boot-rabbitmq-consumer-new</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <releases>
                <enabled>false</enabled>
            </releases>
        </pluginRepository>
    </pluginRepositories>

</project>


application.porperties 文件

server.port=8081
spring.application.name=consumer


spring.rabbitmq.addresses=127.0.0.1:5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=password
spring.rabbitmq.virtual-host=/
spring.rabbitmq.connection-timeout=15000


Receiver1.java 文件

package com.imooc.springbootrabbitmqconsumernew;

import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
@RabbitListener(queues = "queue1")
public class Receiver1 {

    @RabbitHandler
    public void process(String message){
        System.out.println("Receiver1:" + message);
    }
}


Receiver2.java 文件

package com.imooc.springbootrabbitmqconsumernew;

import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
@RabbitListener(queues = "queue2")
public class Receiver2 {

    @RabbitHandler
    public void process(String message){
        System.out.println("Receiver2:" + message);
    }
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小蓝 2023-10-30 09:27:39

同学你好,老师这边测试同学提供的代码和配置文件,没有复现同学截图中的错误。并且从仅有的一条报错信息看,可能是RabbitMQ中的消息队列存在问题。建议同学先对RabbitMQ本身进行排查。

1.对比生产者与消费者使用的消息队列名字是否完全一致,建议直接复制粘贴。

2.检查RabbitMQ服务器是否正常可用,可以使用前面课程中的代码来测试一下服务器。

3.检查运行环境,同学可以下载课程源码,试一下课程源码是否可以正常运行。

祝学习愉快~

  • 提问者 AbelZephyr #1

    https://img1.sycdn.imooc.com//climg/653faeec09a62cb124081484.jpg

    本地的电脑系统是mac, 本地安装的RabbitMQ也正常运行,之前的课程代码都可以实现,就是springboot整个rabbitMQ这一章节报错,请老师,帮忙看下具体是什么问题吧,感谢,具体报错下文》〉》〉》


    Connected to the target VM, address: '127.0.0.1:56170', transport: 'socket'
    
      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::        (v2.2.1.RELEASE)
    
    2023-10-30 21:24:51.005  INFO 29865 --- [           main] SpringBootRabbitmqConsumerNewApplication : Starting SpringBootRabbitmqConsumerNewApplication on bogon with PID 29865 (/Users/lijian/java/rabbitmq-test/spring-boot-rabbitmq-consumer-new/target/classes started by lijian in /Users/lijian/java/rabbitmq-test/spring-boot-rabbitmq-consumer-new)
    2023-10-30 21:24:51.009  INFO 29865 --- [           main] SpringBootRabbitmqConsumerNewApplication : No active profile set, falling back to default profiles: default
    2023-10-30 21:24:51.849  INFO 29865 --- [           main] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: [127.0.0.1:5672]
    2023-10-30 21:24:51.887  INFO 29865 --- [           main] o.s.a.r.c.CachingConnectionFactory       : Created new connection: rabbitConnectionFactory#673bb956:0/SimpleConnection@45792847 [delegate=amqp://admin@127.0.0.1:5672/, localPort= 56177]
    2023-10-30 21:24:51.923  WARN 29865 --- [ntContainer#0-1] o.s.a.r.listener.BlockingQueueConsumer   : Failed to declare queue: queue1
    2023-10-30 21:24:51.928  WARN 29865 --- [ntContainer#0-1] o.s.a.r.listener.BlockingQueueConsumer   : Queue declaration failed; retries left=3
    
    org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationException: Failed to declare queue(s):[queue1]
    	at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:700) [spring-rabbit-2.2.1.RELEASE.jar:2.2.1.RELEASE]
    	at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.passiveDeclarations(BlockingQueueConsumer.java:584) [spring-rabbit-2.2.1.RELEASE.jar:2.2.1.RELEASE]
    	at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:571) [spring-rabbit-2.2.1.RELEASE.jar:2.2.1.RELEASE]
    	at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.initialize(SimpleMessageListenerContainer.java:1338) [spring-rabbit-2.2.1.RELEASE.jar:2.2.1.RELEASE]
    	at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1183) [spring-rabbit-2.2.1.RELEASE.jar:2.2.1.RELEASE]
    	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_271]
    Caused by: java.io.IOException: null
    	at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:129) ~[amqp-client-5.7.3.jar:5.7.3]
    	at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:125) ~[amqp-client-5.7.3.jar:5.7.3]
    	at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:147) ~[amqp-client-5.7.3.jar:5.7.3]
    	at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java:1012) ~[amqp-client-5.7.3.jar:5.7.3]
    	at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java:52) ~[amqp-client-5.7.3.jar:5.7.3]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_271]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_271]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_271]
    	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_271]
    	at org.springframework.amqp.rabbit.connection.CachingConnectionFactory$CachedChannelInvocationHandler.invoke(CachingConnectionFactory.java:1190) ~[spring-rabbit-2.2.1.RELEASE.jar:2.2.1.RELEASE]
    	at com.sun.proxy.$Proxy52.queueDeclarePassive(Unknown Source) ~[na:na]
    	at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:679) [spring-rabbit-2.2.1.RELEASE.jar:2.2.1.RELEASE]
    	... 5 common frames omitted
    
    Disconnected from the target VM, address: '127.0.0.1:56170', transport: 'socket'
    
    Process finished with exit code 1


    2023-10-30 21:29:35
  • 好帮手慕小蓝 回复 提问者 AbelZephyr #2

        同学你好,从同学提供的完整报错信息看,最大的可能是队列本身就没有创建成功。建议同学先检查一下producer中的配置类TopicRabbitConfig中是否有问题。

        另外,上次回答中老师也提到,建议同学尝试运行一下源码。如果源码没有问题,可以正常运行,那么可以确定不是环境问题,那么问题肯定就出在代码上。可以根据这个提示,先检查生产者代码:使用源码的生产者代码配合同学自己的消费者代码,看一下是否能运行。如果能运行说明错误在同学的生产者代码中。如果也不能运行,那么大概率错误在同学的消费者代码中。如果不能确定,可以再尝试使用源码消费者配合同学写的生产者代码来推断一下。

        这种需要跨多个平台的问题,只能逐一去确认每个平台是否都正常,来找到出问题的平台。然后在这个平台中逐步寻找问题。以后同学遇到这种问题时,可以采用这种方式排查一下。像现在,同学处于初学者阶段,很多错误没有处理经验,可能会比较困难,只能使用源码配合解决。后续工作中即使没有源码,也可以采用分段测试的方式进行检测。

    祝学习愉快~

    2023-10-31 09:44:45
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java工程师 2024版
  • 参与学习       2020    人
  • 提交作业       1249    份
  • 解答问题       1202    个

2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师