Я довольно новичок в верблюде, так что, возможно, это глупая ошибка. Но я попытался найти его в Интернете, но нигде не нашел решения.
У меня есть маршрут, который вызывает 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");