O método emit() no CAP Java é completamente síncrono. É uma chamada de método simples que é executada completamente na mesma thread por padrão. Como não vejo que você esteja criando nenhuma thread dedicada em seu código, assumo que seu código continua sendo executado de forma síncrona.
A forma sugerida no CAP Java para alcançar um comportamento assíncrono seria executar explicitamente o código que deseja executar de forma assíncrona em uma thread dedicada. Você pode fazer isso diretamente a partir do seu método de manipulador de eventos "onInvokeMany".
Ao criar uma nova thread, você deve garantir que o RequestContext do CAP Java seja propagado para a nova thread, pois ele é armazenado em uma thread local. Ele contém informações do inquilino e garante o mesmo contexto na thread filha. Você pode encontrar documentação a respeito aqui: https://cap.cloud.sap/docs/java/request-contexts#threading-requestcontext
Se você tiver a dependência cds-integration-cloudsdk no seu classpath, as abstrações do inquilino do CAP e Cloud SDK são automaticamente sincronizadas. Portanto, o DestinationLoader do Cloud SDK deve se comportar automaticamente consciente do inquilino. Você pode encontrar mais informações a respeito aqui: https://sap.github.io/cloud-sdk/docs/java/guides/cap-sdk-integration
Quanto ao código de status: Infelizmente, não é possível influenciar o código de status HTTP de uma ação bem-sucedida para ser 202.
