用于将现代Java系统与文件系统集成的良好模式

时间:2013-01-28 21:14:41

标签: file filesystems jms integration apache-camel

我们有一个系统会向我们的系统发送大量文件。

我们宁愿不在文件系统之上构建一个层来轮询和触发该文件的相应进程,因为文件系统没有提供诸如事务,隔离等的好处。

我们正在考虑使用Apache Camel来监视文件,然后将消息发送到队列以指示其到达。由于我们正在处理消息队列,因此我们将获得随之而来的所有好处,例如消息队列的透明度,成功时发送确认等等。

这听起来像是一件好事,还是处理文件系统的模式更好?

1 个答案:

答案 0 :(得分:1)

如果您需要路由并将文件传递到不同的服务器,请将它们路由等等,那么您的方法可能很好。你需要三思而后行。

可以回滚消息事务,但文件不能。此外,您确实需要考虑要解决的所有情况 - 在序列图中绘制所有可能性,以确保您的解决方案不会太复杂并且所有错误情况都得到处理。

也许,Camel选择文件并将其路由到的解决方案就足够了?然后你可以实现日志记录等。但它不会是跨性别的。

ActiveMQ有类似这样的情况,称为BLOB messages,旨在在带外通道中启用大文件传输,但使用JMS消息控制“信号”。它可能适合您的情况,也可能不适合您的情况,具体取决于您的具体要求。