使用Apache Camel

时间:2015-07-24 02:47:38

标签: java apache-camel batch-processing

我有一个进程A,它不时写入文件(换行符分隔字符串,每个字符串是一个单独的消息),当该文件超过N兆字节或M秒后删除文件并创建一个新文件在同一个地方。我需要编写一个程序来获取此文件中的消息,如果文件已更新,则从中读取另一行,转换为某些消息,应用特殊业务逻辑并将其发送到某处。

此问题可归结为以下单独的问题:

  • 文件输入组件需要读取输入到最近的换行符并且不要尝试一次读取整个文件(再次,正如我之前所说的那样,偶尔写入并且在每次读取和处理每个新行时至关重要文件一出现在该文件中。)。
  • 文件输入组件需要按文件名跟踪文件。删除旧文件后,一旦旧文件被完全处理,它应该开始尝试在同一位置读取新文件。

总体问题实际上类似于logstash正在解决的工具,但我真的不想使用它们,因为我有复杂的Java业务逻辑,我希望在消息处理的不同方面拥有自动化和广泛的测试套件因为这项任务比日志处理更重要。

我当前的原型是作为ad hoc Endpoint实现的(我几乎没有使用任何标准的Camel组件),它很多毛,而且不够灵活。

此外:无法更改进程A传达其消息的方式。我真的更喜欢JMS或类似的东西但不幸的是它不是一种选择。

更新1:我显然试图使用文件组件,但我没有运气解决与文件输入相关的两个要求 - 该组件在一段时间后无法读取文件的添加内容并且无法跟踪文件同一地点。

更新2:当然,我在stackoverflow上阅读了很多类似的与Camel相关的问题,但它们似乎都有更简单的输入相关要求。

0 个答案:

没有答案