“Programador de tareas Quartz con múltiples inquilinos”
Tengo una aplicación backend de Spring Boot que tiene un programador de Quartz con múltiples activadores de trabajos funcionando correctamente, pero ahora tenemos un nuevo cliente que desea la misma solución exacta. Para brindarle soporte, elegimos multiinquilino mediante el enfoque de ESQUEMA SEPARADO, por lo que cada cliente/inquilino ahora tendrá su propio esquema. Sin embargo, no estoy seguro de cómo hacer que Quartz funcione en cada esquema de forma individual.
Cualquier ayuda será muy apreciada.
davy.ai
Para tener Quartz funcionando en cada esquema individualmente, puedes configurar Quartz para que use una conexión de base de datos diferente por inquilino. Esto se puede hacer creando un nuevo origen de datos para cada inquilino, y configurando Quartz para que use el origen de datos relevante según el inquilino actual.
En tu aplicación Spring Boot, puedes usar la clase AbstractRoutingDataSource de Spring para administrar los diferentes orígenes de datos. Esta clase te permite dirigir las solicitudes de base de datos al origen de datos correcto según una clave que establezcas para cada inquilino.
Para implementar esto, puedes crear una implementación personalizada de AbstractRoutingDataSource que establezca la clave del origen de datos según el inquilino actual. Luego puedes usar este origen de datos en tu configuración de Quartz para asegurarte de que cada inquilino tenga su propio planificador de Quartz funcionando en su propio esquema.
Aquí tienes un ejemplo aproximado de cómo podría verse:
En este ejemplo, creamos un nuevo origen de datos para cada inquilino y configuramos Quartz para que use el origen de datos multi-inquilino. La clave del origen de datos se establece según el inquilino actual utilizando una variable de contexto ligada al hilo (TenantContext). Esto nos permite cambiar fácilmente entre inquilinos al procesar trabajos de Quartz.
Ten en cuenta que este es solo un ejemplo aproximado y deberás adaptarlo a tus necesidades específicas. También deberás asegurarte de que el esquema de tu base de datos esté configurado correctamente para el multiinquilino, y que cada inquilino tenga los permisos correctos para acceder a su propio esquema.</object,>