2017-02-13 5 views
0

My Spring Integration определяется в XML согласно ниже (обратите внимание, что я удалил открытия/закрытия символов, как XML не правильно отображать в моем вопросе):AMQP Pollable канал не распознается как Pollable потока

<int-amqp:channel id="actionInstructionTransformed" message-driven="false"/> 

<int-xml:unmarshalling-transformer 
     input-channel="actionInstructionXmlValid" output-channel="actionInstructionTransformed" 
     unmarshaller="actionInstructionMarshaller" /> 

я получил Poller определенный с:

<int:poller id="customPoller" default="true" trigger="customPeriodicTrigger" task-executor="customTaskExecutor" max-messages-per-poll="${poller.maxMessagesPerPoll}" error-channel="drsGatewayPollerError" /> 
    <int:transactional propagation="REQUIRED" read-only="true" transaction-manager="transactionManager" /> 
</int:poller> 

В Java, я получил мой потребитель определился с:

@Transactional(propagation = Propagation.REQUIRED, readOnly = true, value = "transactionManager") 
@ServiceActivator(inputChannel = "actionInstructionTransformed", poller = @Poller(value = "customPoller"), 
     adviceChain = "actionInstructionRetryAdvice") 
public final void processInstruction(final ActionInstruction instruction) 

Из документации (http://docs.spring.io/autorepo/docs/spring-integration/4.0.2.RELEASE/reference/html/amqp.html), я понимаю, что actionInstructionTransformed должно быть загрязняемым, поскольку я добавил message-driven = "false".

При запуске приложения Spring Boot я получаю исключение: вызвано: java.lang.IllegalStateException: для конечной точки, основанной на аннотации, не следует указывать «@Poller», так как «actionInstructionTransformed» - это SubscribableChannel (не Pollable).

Я использую Spring Boot 1.4.4.RELEASE.

Как я могу заставить actionInstructionTransformed распознаваться как загрязняющий?

+0

Существует а 'code' возможности форматирования здесь в StackOverflow: http://stackoverflow.com/editing- Помогите. И только после этого мы вернемся к вам с помощью –

ответ

0

Возможно, вы не импортируете XML? В этом случае структура создаст DirectChannel для входного канала активатора услуги.

Это прекрасно работает для меня ...

@SpringBootApplication 
@ImportResource("context.xml") 
public class So42209741Application { 

    public static void main(String[] args) throws Exception { 
     ConfigurableApplicationContext context = SpringApplication.run(So42209741Application.class, args); 
     context.getBean("pollable", MessageChannel.class).send(new GenericMessage<>("foo")); 
     Thread.sleep(10000); 
     context.close(); 
    } 

    @ServiceActivator(inputChannel = "pollable", poller = @Poller(fixedDelay = "5000")) 
    public void foo(String in) { 
     System.out.println(in); 
    } 

} 

context.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:int-amqp="http://www.springframework.org/schema/integration/amqp" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/integration/amqp http://www.springframework.org/schema/integration/amqp/spring-integration-amqp.xsd"> 


    <int-amqp:channel id="pollable" message-driven="false" /> 

</beans> 
+0

. Я подстриг свое приложение Spring Boot к минимуму медведя (https://github.com/pilif42/amqpPollableChannel), и я понял, почему он разбит в моем случае , Если я использую тот же самый context.xml, что и вы, это все хорошо. Теперь, в моем контексте. Xml, я добавляю следующую строку . Я перестраиваю, запускаю и получаю исключение: «@Poller» не должен указываться для Annotation-based ... Почему это так? Обратите внимание, что я также прокомментировал все мои другие конфигурации, зависящие от кролика: очереди и обмены, определенные в xml. –

+0

Интересно; Я получаю тот же результат, добавляя этот компонент в свой контекст; по какой-то причине это выглядит так, что xml не анализируется. Изучение ... –

+0

Я нашел решение: у меня все еще есть . И с , теперь он работает. –

 Смежные вопросы

  • Нет связанных вопросов^_^