【问题标题】:Storm Esper Bolt Tuple AnchoringStorm Esper 螺栓元组锚定
【发布时间】:2014-05-23 00:23:17
【问题描述】:

我目前有一个拓扑设置,它使用由 GitHub 上的 tomdz 创建的 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));

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

【问题讨论】:

    标签: java apache-storm esper


    【解决方案1】:

    一种选择是将 Storm 元组作为属性附加到 Esper 输入事件,并确保 Esper EPL 通过“select *”或“select originaltuple”选择该属性。然后听众可以使用它。

    另一种选择是在 Esper 之外使用您可能拥有的一些事件 ID 来跟踪这一点。或者通过将输入事件映射到元组的身份哈希图使用输入事件身份。然后,侦听器需要根据 Esper 输入事件进行一些查找,该事件与 Esper 也传递给侦听器的引用相同,然后删除。

    【讨论】:

    • 我最后还是接受了你的第二个建议。当我的 EsperBolt 向 Esper 引擎发送事件时,我将元组添加到队列中。当 Esper 稍后产生结果时,我轮询同一个队列并检索原始元组。然后我可以使用这个元组来完成元组树。
    猜你喜欢
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多