有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java“mule4 SFTP写入连接器写入带有时间戳的文件,移动连接器无法从不同流获取文件名”

为了在SFTP写入连接器中获取文件名,我将文件名存储在变量中,并在将其写入目录后写入文件(暂存)。从不同的流中,我需要将同一个文件移动到输出位置,这两个流不相互关联

we dont have Session variable in Mule4 to achieve this scenario. Could anyone let me know how to store variable like filename(with timestamp) in one flow and read it from different flow.

EX: filename pattern "test" ++ "_" ++ now() as Date {format: "yyyyMMdd"} ++ "_" ++ (now() as String {format: "HH:mm:ss"}) ++ '.txt'


共 (1) 个答案

  1. # 1 楼答案

    会话变量没有帮助,因为它们需要在一个事件上序列化,而且由于流没有相互关联,这是行不通的

    要在不同流之间共享状态,可以使用对象存储。这是一个基于键值的存储,可以在内存中或持久化

    它将允许您将文件名存储在一个流中:

        <os:store key="#[vars.filename]" objectStore="${objectStore}" />
    

    然后从另一个流()中检索它:

        <os:retrieve-all objectStore="${objectStore}"/>
    

    否则将检索所有密钥:

        <os:retrieve-all-keys objectStore="${objectStore}"/>
    

    然后使用foreach迭代所有键并执行逻辑

    或者您可以检索特定的密钥,例如:

    ObjectStore连接器上还有很多其他操作可用。以下是官方文件: https://docs.mulesoft.com/object-store/

    下面是一些配置示例:

    https://github.com/mulesoft/mule-objectstore-connector/tree/master/src/test/resources