Camel中时间序列数据的幂等查询

时间:2015-09-16 17:21:33

标签: apache-camel splunk

我经常使用Camel的幂等模式来防止重复处理离散消息。 当有问题的数据流是大量带有时间戳的邮件时,最好的做法是什么?

考虑这个路由配置(伪代码):

  

计时器 - > idempotent(search_splunk_as_batch - > split - > sql(insert))

我们希望定期从splunk查询并写入sql。我们不想错过任何消息,我们不希望有任何重复的消息。

我不想为每条消息保留一个幂等标记,而是要注意每个批处理的截止时间,并在截止时间开始下一个查询。

1 个答案:

答案 0 :(得分:1)

只要您可以依赖某些假设,您的方法就可能有效:

  • 您的索引器从不加载过去显示的数据(根据_time字段)
  • 您的camel路由从不会在发送到同一数据库表的多个进程中运行。

如果您可以确保满足这些要求,那么您只需存储从搜索中收到的最大时间戳,并将其用于" earliest" splunk搜索命令的参数。存储和检索最大时间戳可以使用类似文件,单独的数据库表或使用目标表中的列来完成。