Sto lavorando con un'applicazione multi-modulo homegrown multithreaded nel mio nuovo lavoro. Utilizziamo il protocollo Thrift
per comunicare le chiamate RPC
tra diverse applicazioni autonome in un sistema distribuito. Uno di loro ascolta su più porte e ho appena notato che fa effettivamente una chiamata RPC a se stessa da un thread richiamato da una presa che ascolta (chiamata al servizio web) a un'altra porta all'interno della stessa app. Ho verificato che poteva realizzare la stessa cosa se fosse andato e chiamato direttamente il metodo che alla fine la procedura remota invoca poiché è tutto all'interno della stessa applicazione, stessa JVM. Per renderlo ancora più misterioso, la chiamata è completamente sincrona, cioè non ci sono callback coinvolti. Il primo thread si siede completamente e attende fino a quando non fa una chiamata attraverso il cavo a se stesso e torna indietro.
Ora, sono perplesso perché qualcuno lo farebbe in questo modo. Sembra di chiamare qualcuno al telefono che si trova nella stessa stanza come te. Qualcuno può fornire una spiegazione del perché lo sviluppatore prima di me avrebbe inventato il modello sopra menzionato? Forse c'è un motivo e mi manca qualcosa.