Невозможно автоматически подключить процессор после добавления пользовательских конвертеров сообщений - PullRequest
0 голосов
/ 06 ноября 2018

На Finchley.SR2, вот код

@Configuration
@EnableAutoConfiguration
@SpringBootApplication
@EnableBinding(Processor.class)
@RestController
public class Application {
    private static Logger log = LoggerFactory.getLogger(Application.class);

    @Autowired
    private Processor processor;

    @Autowired
    MappingJackson2MessageConverter testConverter;

    @Bean
    @StreamMessageConverter
    MappingJackson2MessageConverter createTestConverter(){
        return new MappingJackson2MessageConverter();
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Когда я запускаюсь, я получаю

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.cloud.stream.messaging.Processor' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

Но если я достану @StreamMessageConverter, процессор может быть успешно подключен автоматически.

Что мне делать, чтобы сохранить одновременно настроенный конвертер сообщений и процессор с автопроводкой? Спасибо!

1 Ответ

0 голосов
/ 06 ноября 2018

Там много чего происходит, поэтому давайте попробуем разобрать его. , .

Первый вопрос, зачем вам нужно автоматическое подключение следующего?

@Autowired
private Processor processor;

Как правило, вам не нужно напрямую взаимодействовать с Processor, поскольку он используется платформой для предоставления модели делегирования / подключения между удаленными получателями, отображаемыми связывателями, и вашими обработчиками сообщений. Более того, ваша настоящая проблема связана с жизненным циклом, который может быть незначительной, но безвредной ошибкой с нашей стороны и, вероятно, связана с настройкой и автоматическим подключением процессора в том же классе конфигурации.

Второе:

 @Configuration
 @EnableAutoConfiguration
 @SpringBootApplication

Вам нужен только один

 @SpringBootApplication

Третье:

Зачем вам нужно настроить MappingJackson2MessageConverter? Преобразование типов содержимого является прозрачной функцией инфраструктуры, и хотя мы предоставляем возможность настраивать настраиваемые преобразователи сообщений, настраиваемый вами уже настроен платформой и фактически является первым в стеке из семи предварительно настроенных преобразователей сообщений.

Последний вопрос:

Что вы пытаетесь сделать? Можете ли вы объяснить ваш вариант использования?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...