2016-11-08 150 views
1

我正在使用Spring Integration DSL加快速度。我正在玩下面的例子。Spring集成Java DSL - IntegrationFlow多个用户

@Bean 
    public IntegrationFlow flow() { 
     return IntegrationFlows.from(INBOX) 
       .transform(p -> "world") 
       .get(); 
    } 

我在寻找从这一个流程订阅多个渠道的能力。我找不到任何关于此的信息。

例如类似于下面的内容,其中此流程订阅了不同的渠道。

@Bean 
     public IntegrationFlow flow() { 
      return IntegrationFlows.from(INBOX).flow(INBOX2) 
        .transform(p -> "world") 
        .get(); 
     } 

回答

3

这是不可能的。没有任何Endpoint与几个inputChannel s。

在另一方面,我们不需要这样的复杂性,因为我们总能bridge从一个通道到另一个:

@Bean 
@BridgeTo(INBOX) 
public MessageChannel INBOX2() { 
    return new DirectChannel(); 
} 

你也可以考虑使用一些router始终计算所需通道输出。

MessageChannel在Spring集成设计中本身很复杂,因此混淆端点逻辑听起来不太合适。

1

在本教程中[Receive and send multiple JMS messages in one transaction with Spring Integration Java DSL],他们描述的那样

但是这个属性尚不可用的Java DSL。解决此问题的另一种方法是用事务性轮询器替换消息驱动的 通道适配器,但这在目前的Java DSL中也可能不是 。为了解决这个问题,我们使用jmsTemplate替换了出站适配器中的 jmsFactory,并将会话 事务处理设置为true。导致:

IntegrationFlows 
    .from(subscribableChannel()) 
    .handle(Jms.outboundAdapter(jmsTemplate).destination(QUEUE2)) 
.get(); 
相关问题