2014-09-10 62 views
2

我正在嘗試配置Spring Batch偵聽器,以便將消息發送到Spring Integration Gateway的StepExecution事件。如何使用Spring集成DSL配置StepExecutionListener

以下鏈接介紹瞭如何使用XML

http://docs.spring.io/spring-batch/trunk/reference/html/springBatchIntegration.html#providing-feedback-with-informational-messages

這怎麼可能使用Spring集成DSL設置配置呢?我發現沒有辦法使用DSL配置帶有服務接口的網關。

目前我通過實現一個實際的StepExecutionListener來解決這個問題,然後調用一個用@MessagingGateway註解的接口(調用相應的@Gateway方法)以獲得一條消息到一個通道。然後我爲這個頻道設置一個集成DSL流。

是否有使用DSL一個更簡單的方法,避免瞭解決方法嗎?有沒有辦法將批量監聽器直接連接到網關,就像可以使用XML配置一樣?

乾杯, 緬全部SI DSL的

回答

0

首先就是現有的SI Java和註解配置的擴展,因此它可以與任何其他Java配置使用。 XML @Import當然也是可能的。

有一個在DSL沒有網關的配置,因爲它的方法不能與線性IntegrationFlow是有線的。需要爲每種方法提供下游流。

所以,@MessagingGateway是繼續一個正確的方法:

@MessagingGateway(name = "notificationExecutionsListener", defaultRequestChannel = "stepExecutionsChannel") 
public interface MyStepExecutionListener extends StepExecutionListener {} 

來自對岸@MessagingGateway解析以及<gateway>標籤解析與GatewayProxyFactoryBean定義結束。所以,你只可以聲明豆,如果你不希望引入一個新的類:

@Bean 
public GatewayProxyFactoryBean notificationExecutionsListener(MessageChannel stepExecutionsChannel) { 
    GatewayProxyFactoryBean gateway = new GatewayProxyFactoryBean(StepExecutionListener.class); 
    gateway.setDefaultRequestChannel(stepExecutionsChannel); 
    return gateway; 
} 

最新Milestone 3我有一個想法,介紹nested flows,我們可能能夠引進了Gateway支持後流動。事情是這樣的:

@Bean 
public IntegrationFlow gatewayFlow() { 
     return IntegrationFlows 
       .from(MyGateway.class, g -> 
             g.method("save", f -> f.transform(...) 
                   .filter(...)) 
              .method("delete", f -> f.handle(...))) 
       .handle(...) 
       .get();        
} 

但是我不知道,這將簡化生活,至於任何嵌套拉姆達只是增加了更多的噪音,並可能打破loosely coupling原則。

+0

嗨Artem,謝謝你的詳細解答。是否可以在GatewayEndpointSpec中添加一種指定服務接口的方法,以便最近添加的.gateway()EIP方法可用於設置網關和相應的服務接口? – Menno 2014-09-11 12:48:24

+0

不,因爲'.gateway()'在''內扮演與''相同的角色,並且它是流程的中間部分。當'@ MessagingGateway'是使用方法調用和DI從代碼到Spring Integration Flow的POJI橋。不要混淆顧慮。無論如何,你需要一個來自批量步驟偵聽器的「方法調用」。因此對'.gateway()'所做的任何修改都不會對您有所幫助,因爲您的批處理作業恰好啓動了接口上的流程調用方法。 – 2014-09-11 12:56:15

+0

是的,我明白你的觀點。謝謝你清理那個。 – Menno 2014-09-11 16:59:33

相關問題