Come funziona il servizio di esecutore distribuito in Redisson per quanto riguarda lo scoping / la chiusura?

Aug 24 2020

Se invio un Runnable a un servizio di esecutore distribuito redisson , quali regole devo rispettare?

Sicuramente , non posso avere libero sfogo, non vedo come sia possibile, tuttavia, non è affatto menzionato nei documenti, né alcuna regola apparentemente applicata dall'API, come R extends Serializable o simili.

Se passo questo eseguibile:

new Runnable(()-> {
    // What can I access here, and have it be recreated in whatever server instance picks it up later for execution? 


    // newlyCreatedInstanceCreatedJustBeforeThisRunnableWasCreated.isAccissible(); // ?

    // newlyComplexInstanceSuchAsADatabaseDriverThatisAccessedHere.isAccissible(); // ?

    // transactionalHibernateEntityContainingStaticReferencesToComplexObjects....
   
    // I think you get the point. 

    // Does Redisson serialize everything within this scope? 

    // When it is recreated later, surely, I can not have access to those exact objects, unless they run on the same server, right? 

    // If the server goes does and up, or another server executes this runnable, then what happens? 

    // What rules do we have to abide by here?

})

Inoltre, quali regole dobbiamo rispettare quando spingiamo qualcosa a un oggetto live RQueue, RBlockingDequeu o Redisson?

Non è chiaro dai documenti.

Inoltre, sarebbe fantastico se si potesse fornire un collegamento a un singolo sito di documentazione del sito. Quello qui richiede molti clic e navigazione:

https://github.com/redisson/redisson/wiki/Table-of-Content

Risposte

1 NikitaKoksharov Aug 25 2020 at 12:00

https://github.com/redisson/redisson/wiki/9.-distributed-services#933-distributed-executor-service-tasks

Puoi avere accesso a RedisClient e taskId. Lo stato completo dell'oggetto dell'attività verrà serializzato.

Impostazione TaskRetry applicata a ciascuna attività. Se l'attività non viene eseguita dopo 5 minuti dal momento dell'inizio, verrà riaccodata.