这是SAP PI要求,
- 源系统:XY_客户端
- 中间件:PI系统
- 目标系统:SAP
XML文件被接收到PI系统,对于每个XML文件生成内部文件以跟踪store_number和xml文件的计数。
它是如何工作的:假设如果XML_FILE_1达到PI,则创建名为sequence_gen内部文件。该文件包含XML文件中存在的存储编号,计数将初始化为1。
- 所以第一次,
sequence_gen file contains Store: 1001 Count:1
- (经过一段时间的间隔)
- 如果XML_FILE_2第二次到达P1,
sequence_gen file contains Store: 1001 Count:2
- 等等。
我的问题是:如果有“n”个文件同时进入PI系统,则第一个文件将锁定sequence_gen文件。那么第二个文件将如何更新sequence_gen文件的值?那么如何解决这个问题呢?
我想为每个调用创建一个线程示例,并将其存储在数据库中。以及检索每个示例、执行函数、将结果返回到XML调用并删除该示例。这可能吗?如何推进这一工作?
1条答案
按热度按时间vohkndzv1#
与其跟踪锁定和解锁文件的所有线程,不如让一个线程负责更改文件。让每个线程将一个请求放入一个Concurrent Queue中,然后Concurrent Queue通知Sequence_Gen线程写入自己的文件。实质上:
Sequence_Gen线程:
然后,在任何其他线程中,只需排队并通知有东西要写。