【发布时间】:2021-01-27 11:57:45
【问题描述】:
我对 Camel(以及 hazelcast)真的很陌生,而且我最近一直在玩弄它。一个看似简单的操作给我带来了很大的麻烦,我正在努力寻找任何地方的任何路标。
我有一个听众正在关注榛树地图上的变化。如果所述更改符合某个标准,我想抓取整个地图并将其发送到处理器。像这样的:
from(hazelcast:map:someMap?hazelcastInstance=#hazelcastInstance)
.filter().method(SomeFilter.class, filterMethod)
.???
// If the filter cafeterias are met, get the entire map and send it to a processor
但我真的不确定如何获取整个地图本身,尤其是使用 Java DSL。我发现的最接近的事情是获取地图的keySet,然后在其上调用getAll(keySet),对于这么简单的事情,这似乎是不必要的设计?如果这确实是首选方法,那么还有另一个问题 - 您如何将所述 keySet 作为参数传递给 getAll 操作?即:
<snip>
.setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.GET_KEYS_OPERATION))
.to(hazelcast:map:someMap?hazelcastInstance=#hazelcastInstance) // Gets the keySet just fine.
.setHeader(HazelcastConstants.OPERATION, constants(HazelcastConstants.GET_ALL_OPERATION))
.????
// I've tried .setHeader(HazelcastConstants.OPERATION_PARAM, new
// SimpleExpression("${body}")> here,
// amongst many other things, but, I just get an empty object back, so it's
// pretty clear I'm messing up
// the format or parameter choice here.
.to(hazelcast:map:someMap?hazelcastInstance=#hazelcastInstance)
顺便说一下,这里使用的是camel 2.18.0。
【问题讨论】:
标签: java routes apache-camel hazelcast