Перехват потока работника в входящем канале SmallryeJAVA

Программисты JAVA общаются здесь
Anonymous
Перехват потока работника в входящем канале Smallrye

Сообщение Anonymous »

Мы используем Quarkus 3.15.3.1, Java 21 и JSonata4Java версии 2.5.1. Мы хотим оптимизировать использование JSONATA, поэтому мы готовим выражения для преобразования JSONATA, подобных этому < /p>
Map preparedExpressions = new ConcurrentHashMap();
...
Expressions expression = Expressions.parse(transformation);
preparedExpressions.put(key, expression);
< /code>
Затем мы используем эти подготовленные выражения в наших входящих каналах, которые обрабатываются одновременно (библиотека Smallry должна инициировать потоки работников, если я правильно их понимаю). < /p>
@Blocking(ordered = false, value = "custom-parallel-pool")
@Incoming("incoming-channel")
@Outgoing("outgoing-channel")
@Acknowledgment(MANUAL)
public Message consume(Message message) {
...
Expression expression = preparedExpressions.get(key);
JsonNode result = expression.evaluate(incomingJsonNode);
...
}
< /code>
Тем не менее, библиотека jsonata4java не работает хорошо многопоточно, так как класс экспрессии - это какой -то рабочий класс, хранящий дерево обезвреживания при прохождении через JSON и, таким образом, перезаписан другими потоками. Мы видим возможное решение, имея отдельный экземпляр экспрессии на каждом потоке, который будет храниться в карте PrediveExpressions, включив имя потока в строку ключа, чтобы новый поток создавал свой собственный экземпляр выражения. Есть ли способ перехватить удаление рабочей нити? Мы использовали бы имя потока работника и искали все ключи на карте PredeExpressions, которые содержат имя потока, которое будет удалено с карты, чтобы коллекционер мусора избавился от старых объектов. < /P>
или вы знаете о любом другом решении? Я также попытался искать другие Libary, но библиотека Dash-Join (хотя имея лучшую управление памятью) была намного медленнее в соответствии с точкой зрения обработки.

Подробнее здесь: https://stackoverflow.com/questions/796 ... ng-channel

Вернуться в «JAVA»