2015-06-02 2 views
2

У меня есть следующая xml-конфигурация в моем приложении, и я хотел бы преобразовать ее в Java DSL.Как преобразовать Spring Integration XML в Java DSL для errorChannel

Итак, в этой ссылке я явно определяю имя канала ошибки. В основном, например, причина. С этой ссылкой то, что я ожидаю, происходит, когда нисходящий процесс бросает и исключает, что он должен перенаправить полезную нагрузку через канал ошибки. Как выглядит код Java?

<int-jms:message-driven-channel-adapter 
     id="notification" 
     connection-factory="connectionFactory" 
     destination="otificationQueue" 
     channel="notificationChannel" 
     error-channel="error"  
     /> 

<int:chain id="chainError" input-channel="error"> 
     <int:transformer id="transformerError" ref="errorTransformer" /> 
     <int-jms:outbound-channel-adapter 
      id="error" 
      connection-factory="connectionFactory" 
      destination="errorQueue" /> 
    </int:chain>   

ответ

4
@Bean 
    public IntegrationFlow jmsMessageDrivenFlow() { 
     return IntegrationFlows 
       .from(Jms.messageDriverChannelAdapter(this.jmsConnectionFactory) 
         .id("notification") 
         .destination(this.notificationQueue) 
         .errorChannel(this.errorChannel)) 

       ... 

       .get(); 
    } 

    @Bean 
    public IntegrationFlow ErrorFlow() { 
     return IntegrationFlows 
       .from(this.errorChannel) 
       .transform(errorTransformer()) 
       .handle(Jms.outboundAdapter(this.jmsConnectionFactory) 
         .destination(this.errorQueue), e -> e.id("error")) 
       .get(); 
    } 

EDIT:

@Bean 
    public MessageChannel errorChannel() { 
     return new DirectChannel(); 
    } 

и autowire, или ссылку на него в

.errorChannel(errorChannel()) 
+1

Глупый вопрос, я знаю, но как this.errorChannel определен? Не могли бы вы обновить этот пример, чтобы отразить это? – zachariahyoung

+1

Обновлено, чтобы показать определение errroChannel –

+1

Gary в конфигурации xml Мне не нужно определять канал сообщений для errorChannel. Возможно ли, что DSL будет вести себя одинаково? Я думаю, что .outputChannel в messageDriverChannelAdapter также будет работать одинаково. – zachariahyoung

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