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

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

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



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
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这一章节报错,请老师,帮忙看下具体是什么问题吧,感谢,具体报错下文》〉》〉》


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    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版
  • 参与学习       2037    人
  • 提交作业       1408    份
  • 解答问题       1268    个

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

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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