Производитель Spring Cloud Contract не может отправить сообщение

Я пытаюсь включить Spring Cloud Contract в существующий проект. У меня был некоторый успех с REST, но я изо всех сил пытаюсь настроить сторону обмена сообщениями.

До сих пор я заключил контракт с производителем, который производит тесты в target / generated-test-sources / contract. Я также установил базовый класс для теста.

Я не могу избавиться от этой ошибки:

2017-09-08 17: 10: 51.759 ОШИБКА - - [] - [main] o.s.c.c.v.m.stream.StreamStubMessages: Исключительная ситуация при попытке определить место назначения. Примет имя [приглашает]

org.springframework.beans.factory.NoSuchBeanDefinitionException: нет квалифицирующего bean-компонента типа org.springframework.cloud.stream.config.ChannelBindingServiceProperties, доступного по адресу org.springframework.beans.factory.supportBeanTableFramework.beans.factory. в org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean (DefaultListableBeanFactory.java:340) в org.springframework.context.support.AbstractApplicationContext.getBean (AbstractApplication10Context.java: .messaging.stream.StreamStubMessages.resolvedDestination (StreamStubMessages.java:86) в org.springframework.cloud.contract.verifier.messaging.stream.StreamStubMessages.receive (StreamStubMessages.java:73) в org.springcontramework.vercloud. .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.spring.contramework. 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: исключение при попытке прочитать сообщение из канала с именем [invites]

org.springframework.beans.factory.NoSuchBeanDefinitionException: компонент с именем 'invites' недоступен в org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition (DefaultListableBeanFactory.getBeanDefinition (DefaultListableBeanworkBectory.FactoryArtBeanDefinition). .getMergedLocalBeanDefinition (AbstractBeanFactory.java:1207) по адресу org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:284) по адресу org.springFramework2. )

Мой файл application.yml в src / test / resources:

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 -->`

Я просмотрел документацию, посмотрел выступление Марсина и просмотрел образцы для Spring Cloud Contract, но я застрял. Любая помощь будет принята с благодарностью.


person James Swafford    schedule 08.09.2017    source источник
comment
Привет! Можете ли вы попробовать использовать поезд выпуска для управления зависимостями? Также убедитесь, что у вас есть аннотация @EnableBindings. Также было бы здорово, если бы ваш образец был опубликован где-нибудь на github. Вам будет легче помочь.   -  person Marcin Grzejszczak    schedule 09.09.2017
comment
Привет, Марчин. Использование поезда выпуска решило проблему. Спасибо!   -  person James Swafford    schedule 11.09.2017
comment
Круто, я свой ответ добавил. Не могли бы вы отметить его как подходящий?   -  person Marcin Grzejszczak    schedule 11.09.2017
comment
Извини, Марчин, я заговорил слишком рано. Я создал демонстрационный проект @ github.com/jswaff/scc-demo. Я уверен, что мне не хватает чего-то простого, но я не могу понять это. Не могли бы вы взглянуть?   -  person James Swafford    schedule 12.09.2017
comment
Я обновил свой ответ недостающими частями.   -  person Marcin Grzejszczak    schedule 12.09.2017


Ответы (1)


Первый выпуск:

Пожалуйста, используйте шлейф выпуска. В цепочке выпусков мы знаем, что нет недопустимых зависимостей.

Вторая проблема:

У вас нет аннотации @EnableBinding(Source.class). Вот почему Stream не знает, как выполнить привязку к каналу output.

Если вы перейдете к примерам Spring Cloud Contract, вы заметите эту строку в основном классе приложения (https://github.com/spring-cloud-samples/spring-cloud-contract-samples/blob/мастер/производитель/src/main/java/com/example/ProducerApplication.java#L9). После того, как я добавил эту строку в ваш код, контекст запустился, но тесты не прошли, потому что сообщение не было отправлено.

person Marcin Grzejszczak    schedule 11.09.2017