spring Google Cloud Pub/Sub API和Sping Boot 应用程序

b91juud3  于 2023-06-21  发布在  Spring
关注(0)|答案(5)|浏览(154)

我写的Spring Boot 程序订阅谷歌云Pub/Sub主题为此我使用谷歌的教程,但当我运行应用程序我得到这个错误

2019-02-02 18:03:10.248  INFO 15080 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2019-02-02 18:03:10.271  INFO 15080 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2019-02-02 18:03:10.610 ERROR 15080 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

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

Description:

Parameter 1 of method messageChannelAdapter in tech.garoon.cloud.CloudApplication required a bean of type 'org.springframework.cloud.gcp.pubsub.core.PubSubTemplate' that could not be found.


Action:

Consider defining a bean of type 'org.springframework.cloud.gcp.pubsub.core.PubSubTemplate' in your configuration.


Process finished with exit code 1

如何解决这个问题?

8e2ybdfx

8e2ybdfx1#

GcpPubSubAutoConfiguration提供了自动配置功能,可以创建必要的bean,包括PubSubTemplate。在你的情况下,有些东西是错过了,请确保依赖关系到位或重新创建以下bean使其工作。

@Bean
    public PubSubTemplate pubSubTemplate(PubSubPublisherTemplate pubSubPublisherTemplate,
            PubSubSubscriberTemplate pubSubSubscriberTemplate) {
        return new PubSubTemplate(pubSubPublisherTemplate, pubSubSubscriberTemplate);
    }

另外,请确保根据application.properties中的以下属性创建GcpContextAutoConfiguration

spring.cloud.gcp.credentials.location=${gcp_credentials}

启动器依赖

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-gcp-starter-pubsub</artifactId>
        </dependency>
jgwigjjp

jgwigjjp2#

解决方案

我添加了这个依赖项

implementation 'org.springframework.cloud:spring-cloud-gcp-autoconfigure:1.1.0.RELEASE'

我的依赖关系

dependencies {
    implementation 'org.springframework.cloud:spring-cloud-gcp-pubsub:1.1.0.RELEASE'
    implementation 'org.springframework.cloud:spring-cloud-gcp-autoconfigure:1.1.0.RELEASE'
    implementation "org.springframework.boot:spring-boot-starter-web:2.1.2.RELEASE"
    implementation 'org.springframework.integration:spring-integration-core:5.1.2.RELEASE'
}
nwo49xxi

nwo49xxi3#

如果使用外部配置类来注册通道、消息处理程序等,请确保使用@Import({GcpPubSubAutoConfiguration.class})注解配置类

@Configuration
@Import({GcpPubSubAutoConfiguration.class})
public class PubSubConfig{

}
olhwl3o2

olhwl3o24#

我在使用这些版本的spring-boot和spring-cloud-gcp-starter-pub时遇到了这个问题:

<groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-gcp-starter-pubsub</artifactId>
            <version>1.2.8.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>1.2.8.RELEASE</version>
        </dependency>

在我的www.example.com中application.properties我有spring.cloud.gcp.pubsub.enabled=false用于本地开发。我删除了spring.cloud.gcp.pubsub.enabled=false,它工作了。虽然现在它创建了一个到pubsub gcp主题的连接,但对于本地开发,您需要注解掉发布,以避免发送消息。

guz6ccqo

guz6ccqo5#

THE ANSWER IN ANOTHER THREAD THIS IS BASED ON

更多细节见上面,我不会费心重新创作,因为那里的海报很好地说明了这个问题。
为了更具体地提出解决方案,在我的案例中,这是使用org.springframework.cloud提供的工件而不是com.google.cloud提供的工件的问题。当我切换到后者时,GcpPubSubAutoConfiguration就像预期的那样启动了
我认为这是否是一个适合你的解决方案将关系到你使用什么版本的Spring/Sping Boot 。看看这些博客文章,讨论这个问题:

相关问题