引入RocketMQ后,启动不了

来源:9-15 Spring Cloud Stream-编写生产者

mikemhm

2020-09-09

一开始用的版本是视频一开始的,如下

	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

	<!--Greenwich.SR2 第二个bug修复版本-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

看评论说,版本问题,后来我参考老师git上改了,如下

<?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.1.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.mhmzq</groupId>
    <artifactId>springstream</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springstream</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-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>2.0.3</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--<dependency>-->
            <!--<groupId>org.springframework.cloud</groupId>-->
            <!--<artifactId>spring-cloud-stream</artifactId>-->
            <!--<version>2.1.3.RELEASE</version>-->
        <!--</dependency>-->
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <!--Greenwich.SR2 第二个bug修复版本-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--整合alilbaba-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>0.9.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

但是还是启动报错,这个错误信息如下,

2020-09-09 09:50:01.802  WARN 15272 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'testContorller': Unsatisfied dependency expressed through field 'source'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.cloud.stream.messaging.Source' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
2020-09-09 09:50:01.807  INFO 15272 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2020-09-09 09:50:01.815  INFO 15272 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2020-09-09 09:50:01.912 ERROR 15272 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Field source in com.mhmzq.springstream.controller.TestContorller required a bean of type 'org.springframework.cloud.stream.messaging.Source' that could not be found.

The injection point has the following annotations:
	- @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'org.springframework.cloud.stream.messaging.Source' in your configuration.


Process finished with exit code 1

麻烦老师看一下,什么问题?

写回答

3回答

大目

2020-09-09

您好,从您贴出的代码来看,版本是兼容的,代码目测也没有明显问题。

能否将代码提供到GitHub或者Gitee,我来调试下?

0
1
mikemhm
已解决,非常感谢!
2020-09-09
共1条回复

mikemhm

提问者

2020-09-09

解决了,启动类导包导错了。。。

0
1
大目
好嘞,又踩到一个坑,又前进了一步,加油!
2020-09-09
共1条回复

mikemhm

提问者

2020-09-09

启动类代码如下

```

package com.mhmzq.springstream;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.stream.annotation.EnableBinding;

import javax.xml.transform.Source;

@SpringBootApplication
@EnableBinding(Source.class)
public class SpringstreamApplication {

   public static void main(String[] args) {
       SpringApplication.run(SpringstreamApplication.class, args);
       System.out.println("启动成功");
   }

}

```

testController代码如下

```

package com.mhmzq.springstream.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.stream.messaging.Source;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestContorller {

   @Autowired
   private Source source;

   @GetMapping("/getName")
   public String getName(){
       this.source.output()
               .send(MessageBuilder.withPayload("我是消息").build());
       return "success";
   }
}

```

0
0

Spring Cloud Alibaba微服务从入门到进阶

面向未来微服务:熟练掌握Spring Cloud Alibaba

3085 学习 · 1324 问题

查看课程