我热衷于在新项目中使用ESB(可能是WSO2,Mule,Petals或Service Mix)。
我有许多业务流程/工作流程可以在ESB中很好地工作:但是我在一个特定场景中苦苦挣扎。
基本要求是通过多个阶段处理传入的二进制文件:
传入的文件将被放入本地目录。所有工具都支持对目录进行轮询,因此这不是问题。
但是,根据我所阅读的内容,大多数工具都希望消息的有效负载易于读取,以便可以直接在有效负载上执行处理。在我的情况下,我只想使用传入的文件来生成我的真实有效载荷数据:我将写入数据库的值。
这是ESB可以支持的模式吗?有没有关于使用上述任何工具进行此类数据处理的文章?我应该关注其他任何技术/模式吗?
希望这是有道理的!
非常感谢,
肯
答案 0 :(得分:2)
WSO2提供了侦听文件系统中文件的功能。但是,根据您的查询,您似乎需要使用您的专有格式处理二进制文件。如果是这样,您可以使用WSO2 ESB vfs transport [1],您必须实现自定义消息格式化程序和构建器([2]中描述的普通java代码)
[1] http://wso2.org/project/esb/java/4.0.0/docs/samples/transport_samples.html#Sample254 [2] http://charithwiki.blogspot.com/2010/11/how-to-write-axis2-message-builder.html
答案 1 :(得分:1)
这应该可以通过ESB实现。特别是对于UltraESB,您可以使用其内置的文件传输来完成此操作,该文件传输支持在处理后将文件移动到默认的归档区域。
UltraESB的拆分和聚合功能可用于将文件拆分为多个部分并单独处理。 “得分”生成可以使用Java或任何其他脚本语言来完成,这些脚本语言利用UltraESB API与消息(在本例中是文件的一部分)及其环境进行交互。
使用UltraESB及其数据库连接机制可以轻松完成数据库交互。此外,您可以使用UltraESB以事务方式执行这些更新。
如果文件是标准CSV或EDI格式,则可以使用csv或EDI支持轻松处理文件。所有这些都通过使用Java或任何脚本语言的极其简单的配置。
[1] - http://docs.adroitlogic.org/display/esb/Transactional+ESB+use+cases+made+simple+with+the+UltraESB