我有一个多租户应用程序,客户可以在其中提交其订单(JSON有效负载),该订单必须离线处理。我们正在使用每个租户策略的数据库,并且配置工作正常。但是,对于本示例中的异步处理,我们陷入了困境。客户提交有效负载后,会将其保存到表中。我们要运行一个计划任务,该任务可以读取此表并处理其中的订单。
我们尝试了类似的事情:
@Scheduled(fixedRate = 60000)
public void doSomething() {
TenantDataSource tenantDataSource = context.getBean(TenantDataSource.class);
Set<String> tenants = tenantDataSource.getAll().keySet();
tenants.forEach(tenant -> {
MDC.setContext(new CallContext().setTenantId(tenant));
context.getBean(JobService.class).listJobs();
});
}
但这仍然会在master数据库中而不是在租户特定数据库中查找作业。
有指针吗?
答案 0 :(得分:0)
确保doSomething()方法不是事务性的,因为transactional
会创建自己的拦截器,而不是调查解析器。