Storm Esper Bolt Tuple Anchoring

时间:2014-05-22 09:37:43

标签: java apache-storm esper

我目前有一个拓扑设置,它使用了由tomdz在GitHub上创建的Esper Bolt。除了涉及元组锚定之外,一切似乎都能正常工作。

在Esper Bolt本身有一个回调:

public void update(EventBean[] newEvents, EventBean[] oldEvents, EPStatement statement, EPServiceProvider epServiceProvider)

这里的问题是我没有引用元组树中的前一个元组。这意味着当我将Esper结果发送到序列中的下一个Bolt时,我无法提供用于锚定的元组:

collector.emit(new Values(eventName, eventGrouping, eventDescription, correlatedValues));

想知道是否有人在自己的项目中遇到过这个问题?如果是这样你怎么解决这个问题?我想使用锚定来确保整个拓扑中的消息可靠性。

1 个答案:

答案 0 :(得分:1)

一个选项是将Storm元组作为属性附加到Esper输入事件,并确保Esper EPL通过" select *"选择属性。或者"选择originaltuple"。听众可以使用它。

另一个选项是使用您可能拥有的某个事件ID来跟踪Esper之外的内容。或者通过标识hashmap使用输入事件标识将输入事件映射到元组。然后,侦听器需要根据Esper输入事件进行一些查找,该事件与Esper也传递给侦听器的引用相同,并删除。