No job, a resposta da pergunta "qual tenant?" entra como um argumento (de linha de comando, talvez, ou variável de ambiente, enfim). A questão é que para que isso funcione, a responsabilidade do seu middleware deve estar limitada a apenas responder a pergunta com base na requisição, não de fornecer acesso à infraestrutura correspondente. Uma vez que essa responsabilidade de acessar a infraestrutura (bancos de dados, armazenamento, etc.) esteja isolada, fora do middleware, pode ser utilizada tanto pelo contexto HTTP, quanto pelos jobs. Apenas a resposta de "qual tenant?" virá de fontes diferentes em cada caso, mas o acesso ao banco virá do mesmo código. O componente pode ser classe ou função (ou qualquer coisa) que execute "me forneça acesso ao banco do tenant X".
Respondendo a "De que maneira abortaria essa situação de cron..." dentro da publicação Multi tenancy com bancos de dados separados por cliente
1