Давайте начнем отсюда: https://docs.spring.io/spring-integration/docs/5.0.9.RELEASE/reference/html/overview.html#programming-tips
Благодаря конфигурации XML и поддержке пространства имен Spring Integration анализаторы XML скрывают, как целевые компоненты объявляются и соединяются вместе.Для конфигурации Java и аннотации важно понимать API-интерфейс Framework для целевых приложений конечного пользователя.
Затем мы открываем XSD для этого <int-redis:queue-inbound-channel-adapter>
:
<xsd:element name="queue-inbound-channel-adapter">
<xsd:annotation>
<xsd:documentation>
Defines a Message Producing Endpoint for the
'org.springframework.integration.redis.inbound.RedisQueueMessageDrivenEndpoint' for listening a Redis
queue.
</xsd:documentation>
</xsd:annotation>
Так что, похоже, что int-redis:queue-inbound-channel-adapter
не MessageSource
.Поэтому @InboundChannelAdapter
это тупик.Я согласен, что имя элемента XML неверно, но уже слишком поздно его переименовывать.
Отсюда мы также выяснили, что нам нужно иметь дело с RedisQueueMessageDrivenEndpoint
.И так как это управляемый сообщениями , с самоуправлением нам не нужны никакие специальные аннотации для этого.Достаточно просто объявить его как боб:
@Bean
RedisQueueMessageDrivenEndpoint redisQueueMessageDrivenEndpoint(RedisConnectionFactory redisConnectionFactory, RedisSerializer<?> serializer) {
RedisQueueMessageDrivenEndpoint endpoint =
new RedisQueueMessageDrivenEndpoint("archive.post.publication.queue", redisConnectionFactory);
endpoint.setOutputChannelName("postPublicationChannel");
endpoint.setErrorChannelName("postPublicationLoggingChannel");
endpoint.setReceiveTimeout(5000);
endpoint.setSerializer(serializer);
return endpoint;
}