java fileread
为什么要将配置数据加载到内存中?
在某些应用场景中,最好使用带有静态数据的配置文件,并在流开始时仅将其加载到内存中一次,而不是在每次执行流之前都将其加载到内存中。 例如:
- 当您想使用外部文件控制调用应用程序和消息流的顺序时
- 当您要将静态的,特定于环境的信息存储在IBM Integration Bus之外时,可以由对产品和应用程序知识有限的人员来管理。
- 当您想通过配置文件控制日志级别和日志文件名时
- 当您想在外部文件中存储多语言语句和错误消息时
在以上场景中,将配置文件保留在IBM Integration Bus之外可以使您不必在数据发生更改时就编辑消息流。 同样,在每次消息流运行期间读取配置文件都是很耗时的,并且一旦将它们加载到内存中就意味着更少的I / O操作,更快的数据访问和更好的性能。
设计
- FileRead节点用于从消息流中读取配置文件。
- 使用共享变量将配置数据加载到消息流中的内存缓存中。 每次代理启动后,当第一条消息通过流时,将加载配置数据。 共享变量是持久的,并且可以在执行组过程的生命周期,流或节点的生命周期或声明该变量SQL节点的生命周期中持续,以最短者为准。
- 您可以在消息流范围内的任何位置使用共享变量来访问内存中的数据。 它们对于流中的所有消息都是可见的。 只要配置数据发生更改,您就可以编辑配置文件并重新启动消息流以实施更改。
实施范例
这是一个示例,涉及将Web服务凭据存储在配置文件中,在消息流的第一次运行期间将其加载到内存中,然后在消息流中的所有后续事务期间对其进行访问。 配置文件的名称是凭据。属性,它包含用户名admin和密码adminpwd。 您可以使用FileRead节点读取配置数据:
- 创建DFDL来定义配置文件的结构:选择File => New => Message Model ,选择面向记录的文本作为Format,然后单击Next 。
- 选择“ 使用此向导创建DFDL模式文件”来指导您 ,然后单击“ 下一步” 。 输入DFDL模式文件名和消息名:
- 单击“ 下一步”,然后在“正文数”字段中输入2。 取消选中第一个记录是标题 , 最后一个记录是尾随 。 点击完成 :
- 在创建的DFDL中,编辑字段名称,如下所示:
- 将表示形式属性下的序列的分隔符属性编辑为= :
- 这是消息流,说明将配置数据加载到内存中:
建立请求
从BuildRequest节点传播到FileRead节点(out2)之前,将执行检查以查看是否已加载配置共享变量。 如果他的共享变量不可用,则触发文件读取。 通常,仅在流程的第一次运行期间将配置数据加载到共享变量中。 以下是一些示例代码,用于触发将配置数据加载到内存中:
FileRead节点
在“ FileRead”节点中,配置需要从中读取文件的“输入”目录和“文件名”,如下所示:
对于消息域,选择DFDL ,然后选择消息模型:
加载到内存
使用以下代码,将从文件读取的数据加载到共享变量中:
然后,控制权返回到BuildRequest节点:
建立请求
它执行以下代码以在请求中设置凭据:
结论
本文介绍了将IBM Integration Bus配置文件加载到内存中的优势,并向您展示了如何在消息流的首次执行期间执行此操作。
翻译自: https://www.ibm.com/developerworks/websphere/library/techarticles/1312_negandhi/1312_negandhi.html
java fileread