1

我热衷于在新项目中使用 ESB(可能是 WSO2、Mule、Petals 或 Service Mix)。

我有许多可以在 ESB 中很好地工作的业务流程/工作流:但是我在一个特定的场景中苦苦挣扎。

基本要求是通过多个阶段处理传入的二进制文件:

  • 使用外部工具预处理文件;
  • 根据一些配置数据拆分文件;
  • 处理每个较小的文件以计算“分数”。其中一些将由我将编写的代码处理,但在某些情况下也会调用外部软件;
  • 将所有计算的分数加载到数据库中。这必须在流程结束时完成,而不是增量完成(因为只有在处理文件期间才能找到主键);
  • 将初始文件移动到存档区域。

传入的文件将被放入本地目录。所有工具都支持对目录进行轮询,因此这不是问题。

但是,根据我阅读的内容,大多数工具都希望消息的有效负载易于阅读,以便可以直接在有效负载上执行处理。在我的情况下,我只想使用传入文件来生成我的真实有效负载数据:我将写入数据库的值。

这是 ESB 可以支持的模式吗?是否有关于使用上述任何工具进行此类数据处理的文章?我应该看看其他技术/模式吗?

希望这是有道理的!

非常感谢,

4

2 回答 2

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

于 2011-11-18T04:37:04.627 回答
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

[2] - http://docs.adroitlogic.org

于 2012-03-26T03:39:31.510 回答