Верблюжья биржа свойства нитки безопасности - PullRequest
0 голосов
/ 25 апреля 2020

Я довольно новичок в верблюде, так что, возможно, это глупая ошибка. Но я попытался найти его в Интернете, но нигде не нашел решения.

У меня есть маршрут, который вызывает bean-компонент, который читает массив json из полезной нагрузки json и затем сохраняет его элементы в обмен имущества в виде строки. Это свойство будет доступно другому компоненту позже по другому маршруту, где я проверяю, присутствуют ли в нем определенные значения или нет, и на основании результатов принимаю решение о том, как преобразовать исходящую полезную нагрузку.

Проблема: у меня есть заметил сценарий, когда я отправляю два сообщения друг за другом, и моя служба забирает их и начинает обрабатывать их в отдельных потоках (скажем, 1 и 2). Теперь иногда, если поток 1 все еще выполняется, поток 2 переопределяет свойство exchange, что приводит к путанице в выводе потока 1. В большинстве случаев он работает нормально, но иногда такое поведение наблюдается.

Я думал, что exchange позаботится о безопасности потоков, если я использую свойство exchange для переноса значения в другой маршрут. Но похоже, что это не так, любая идея, что я должен сделать, чтобы убедиться, что свойство exchange не переопределяется другим потоком.

    //in bean A (used by route a)
    exchange.setProperty("elems", elems);

    //in bean B (used by route b which comes after route a)
    String productElements = (String) exchange.getProperty("elems");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...