Мина2 с Apache Camel, декодер параллелизма
Я использую Mina2 с Camel для подключения к серверу TCP (через SSL). Поскольку Mina2 не предоставляет декодер байтового массива по умолчанию, поэтому мне пришлось написать его самостоятельно.
Поэтому, по некоторым причинам, Мина разделяет данные, полученные на куски, и вызывает функцию декодирования несколько раз, и когда я копаю документацию, он говорит, что несколько потоков могут обрабатывать полученные данные и пытаться декодировать n раз. Вот текст:
MINA гарантирует, что никогда не будет более одного потока, одновременно выполняющего функцию decode() для одной и той же сессии IoSession, но это не гарантирует, что это всегда будет один и тот же поток. Предположим, что первый фрагмент данных обрабатывается потоком-1, который решает, что он еще не может декодировать, когда следующий фрагмент данных поступает, он может быть обработан другим потоком.
Теперь, поскольку у меня есть минимальная конечная точка для ввода / вывода, верблюд поддерживает один и тот же объект сеанса ввода / вывода для всех передач.
Я сохраняю состояние декодера с помощью IOSession.setAttributes, говорю нет. байтов, полученных до сих пор для этого конкретного обмена, и заканчиваю декодировать, когда я получаю все сообщение.
Я опасаюсь, что если одновременно будут работать два разных обмена и эти разные потоки конкурируют за одно и то же свойство IOSession, свойства могут испортиться. Я также не могу получить доступ к свойству обмена верблюда в функции декодера Мины, поэтому я не могу однозначно идентифицировать этот конкретный обмен.
Любая помощь в этом отношении была бы отличной!!