msgstr "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 ответ

Решение

Сеансовые переменные не помогли бы, так как они должны быть сериализованы для события, и поскольку потоки не связаны, это не будет работать.

Чтобы разделить состояние между различными потоками, вы можете использовать Object Store. Это хранилище на основе значений ключей, которое может храниться в памяти или быть постоянным.

Это позволит вам сохранить ваше имя файла в одном потоке:

    <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

Другие вопросы по тегам