【问题标题】:Good Patterns for integrating modern Java systems with file systems将现代 Java 系统与文件系统集成的良好模式
【发布时间】:2013-01-12 08:13:45
【问题描述】:
我们有一个系统会向我们的系统发送大量文件。
我们不希望在文件系统之上构建一个层来轮询和触发该文件的相应进程,因为文件系统没有提供事务、隔离等好处。
我们正在考虑使用 Apache Camel 来监视文件,然后将消息发送到队列以指示其到达。由于我们正在处理消息队列,因此我们将获得随之而来的所有好处,例如消息队列的透明性、成功时发送回确认等。
这听起来是件好事吗,还是有更好的文件系统处理模式?
【问题讨论】:
标签:
file
filesystems
jms
integration
apache-camel
【解决方案1】:
如果您需要将文件路由和传递到不同的服务器、路由它们等,那么您的方法可能很好。你需要三思而后行。
消息事务可以回滚,但文件不能。此外,您确实需要考虑您想要解决的所有情况 - 在序列图中绘制所有可能性,以确保您的解决方案不会太复杂并且所有错误情况都得到处理。
也许,Camel 获取文件并将其路由到的解决方案就足够了?然后你可以实现日志等。但它不会是跨国家的。
ActiveMQ 为这种情况提供了一些东西,称为BLOB messages,旨在启用带外通道中的大文件传输,但使用 JMS 消息来控制“信号”。它可能适合也可能不适合您的情况,具体取决于您的具体要求。