我有集成流程,我想在步骤之间将流程中的实体写到我的Gemfire缓存中,但是我没有弄清楚该怎么做。
@Bean
public IntegrationFlow myFlow(CacheEntityDAL cacheDAL,Transformer t,
MyFilter f) {
return IntegrationFlows.from("inChannel")
.transform(t) //returns the entity
//I want to put to my cacheDAL.put(entity) here
.filter(f)
.channel("outChannel")
.get();
}
谢谢
最佳答案
要写入Gemfire缓存,您需要使用Spring Integration Gemfire支持中的CacheWritingMessageHandler
。
但是,由于这是one-way
,它仅用于编写,因此没有直接的方法可以将其插入流程的中间。另一方面,您只想使用相同的有效负载进行存储并向下游进行。为此,我建议将PublishSubscribeChannel
与两个订户一起使用:提到的CacheWritingMessageHandler
,然后是流程的其余部分。像这样:
return IntegrationFlows.from("inChannel")
.transform(t) //returns the entity
.publishSubscribeChannel(c -> c
.subscribe(sf -> sf
.handle(new CacheWritingMessageHandler(gemfireRegion()))
.filter(f)
.channel("outChannel")
.get();
因此,通过这种方式,您可以发送到Gemfire并移至主要流程,下一个
filter()
将会成为第二个订阅者,直到第一个订阅者在Gemfire上获得成功后,它才能正常工作。
关于java - 如何在Spring Integration DSL中将对象放入Gemfire缓存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51875915/