У меня есть приложение Spring, которое использует стратегию схемы Hibernate и класс TenantContext
для хранения идентификатора клиента (такой же дизайн показан здесь: https://vladmihalcea.com/hibernate-database-schema-multitenancy/).
Все работает хорошо при работе с синхронными HTTP-запросами, обрабатываемыми Spring.
Кроме того, у меня есть несколько маршрутов Camel, которые запускаются заданиями chron. Они используют компонент JPA для чтения или записи в источник данных. Объект Exchange
знает идентификатор арендатора. Как перенести эту информацию в Hibernate?
Я думал об использовании прослушивателя или перехватчика для получения идентификатора арендатора из Exchange
и установки объекта TenantContext
на каждом шаге маршрута. Затем TenantContext будет использоваться классом Hibernate CurrentTenantIdentifierResolver
для разрешения клиента.
Как должен выглядеть TenantContext
? Это ThreadLocal
жизнеспособный вариант? А как насчет потоков asyn c?
В целом, есть ли у вас какое-либо хорошее решение для поддержки многопользовательского режима Hibernate при использовании Camel?