Реализовать кеш в tibco bw - PullRequest
1 голос
/ 20 июня 2019

Реализация кеша в TIBCO BW

Мне нужно реализовать кеш / память в TIBCO BW.Содержимое этого кэша должно быть доступно во всех проектах BW.

Я пытаюсь сделать, когда получаю сообщение, содержащее несколько записей об отправке - (Отгрузка и доставка - это уникальная комбинация)

  1. Мне нужно сначала проверить в кеше, существует ли какая-либо из этих записей.Если да - отклонить весь XML. Если нет, то поместите эти данные в кэш / память.

  2. Как только это будет сделано, мне нужно вызвать SOAP-ответ на запрос во внешнюю систему.

  3. В другом проекте, когда Подтверждение получено от внешней системы, мне нужно проверить записи в сообщении, найти эти записи в кэше и удалить их.

Есть ли способ сделать это?

Проблема здесь в том, что нет единого ключа для всего сообщения.Каждая запись с комбинацией отправки / доставки уникальна.

Вот что я попробовал и оспаривал в ней: 1) Я думал о том, чтобы поместить данные в файл и назвать файл в качестве идентификатора запроса / ключа для каждого сообщения.,Затем в другом проекте проверьте файл и удалите его

Но поскольку у нас нет ключа, я не могу этого сделать.

2) Использование общих переменных: я полагаю, что общие переменные не будут доступны для всехBW проекты.Итак, эта опция отсутствует

3) Третий вариант - использовать очередь EMS, временно там оставить сообщение, содержащее записи.Затем выполните поиск в этом, и, если записи соответствуют, отклоните запрос.

И, в подтверждении (другой проект), найдите записи в сообщении ems и удалите это конкретное сообщение.

Любая помощьна это было бы оценено.

спасибо

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Почему вы не используете базу данных или файл для хранения записей?Потому что при остановке или перезапуске или возникновении проблемы в appnode кэш будет удален, и вы не сможете получить записи, которые не были обработаны.

0 голосов
/ 20 июня 2019

4-й вариант - использовать tibco-операцию «Глобальный экземпляр Java» для реализации кэша в Java.

"Ресурс общей конфигурации Java Global Instance позволяет вам указать объект Java, который может быть общим для всех экземпляров процесса в виртуальной машине Java (JVM). Когда двигатель процесса запущен, создается экземпляр указанного класса Java. "

Вы можете настроить тонны кэша Google на Java, например https://crunchify.com/how-to-create-a-simple-in-memory-cache-in-java-lightweight-cache/

Относительно вашего заявления: «Проблема здесь в том, что для целого сообщения не существует уникального ключа. Каждая запись с комбинацией отправки / доставки является уникальной»

Итак, у вас есть уникальный ключ - комбинация отгрузки / доставки уникальна. Если размер записи не слишком велик, вы можете использовать запись в качестве ключа «как есть» или создать уникальный хеш для каждой записи и использовать его в качестве ключа, если размер ключа является проблемой.

...