Spring Cloud Contract生成器无法发送消息

时间:2017-09-08 21:24:23

标签: spring spring-boot spring-jms spring-cloud-contract

我试图将Spring Cloud Contract合并到现有项目中。我在REST方面取得了一些成功,但我却在努力建立消息传递方面。

到目前为止,我已经在生产者处建立了一份合同,该合同确实在目标/生成测试源/合同中进行了测试。我还为测试设置了一个基类。

我无法解决此错误:

  

2017-09-08 17:10:51.759错误 - - [] - [main] o.s.c.c.v.m.stream.StreamStubMessages:尝试解析目标时发生异常。将采用名称[邀请]

     

org.springframework.beans.factory.NoSuchBeanDefinitionException:没有类型' org.springframework.cloud.stream.config.ChannelBindingServiceProperties'的限定bean。可得到           在org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:353)           在org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:340)           在org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1093)           在org.springframework.cloud.contract.verifier.messaging.stream.StreamStubMessages.resolvedDestination(StreamStubMessages.java:86)           在org.springframework.cloud.contract.verifier.messaging.stream.StreamStubMessages.receive(StreamStubMessages.java:73)           在org.springframework.cloud.contract.verifier.messaging.stream.StreamStubMessages.receive(StreamStubMessages.java:110)           在org.springframework.cloud.contract.verifier.messaging.stream.StreamStubMessages.receive(StreamStubMessages.java:36)           在org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierMessaging.receive(ContractVerifierMessaging.java:40)           在org.springframework.cloud.contract.verifier.tests.email.MessagingTest.validate_invitedContract(MessagingTest.java:27)

以后

  

2017-09-08 17:10:51.759错误 - - [] - [main] o.s.c.c.v.m.stream.StreamStubMessages:尝试从名为[邀请]的频道中读取消息时发生异常

     

org.springframework.beans.factory.NoSuchBeanDefinitionException:没有名为'的bean邀请'可得到           在org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:687)           在org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1207)           在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284)           在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)

我在src / test / resources下的application.yml文件:

spring: cloud: stream: bindings: output: content-type: application/json destination: invites

我有以下依赖项:

`
    <!-- Spring Cloud Contract Deps -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-stream</artifactId>
        <version>1.2.2.RELEASE</version>
    </dependency>       

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-contract-verifier</artifactId>
        <version>1.1.3.RELEASE</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-stream-test-support</artifactId>
        <version>1.2.2.RELEASE</version>
        <scope>test</scope>
    </dependency>
    <!-- END SCC Deps -->`

我已经梳理了文档,观看了Marcin的演讲并查看了Spring Cloud Contract的样本,但我被卡住了。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

第一期:

请使用发布列车。在发布系列中,我们知道没有无效的依赖项。

第二期:

您没有@EnableBinding(Source.class)注释。这就是为什么Stream不知道如何绑定到output频道的原因。

如果您转到Spring Cloud Contract示例,您会在主应用程序类(https://github.com/spring-cloud-samples/spring-cloud-contract-samples/blob/master/producer/src/main/java/com/example/ProducerApplication.java#L9)上注意到这一行。在我将此行添加到您的代码后,上下文已启动,但测试失败导致邮件未被发送。