Ai vecchi tempi, si lavorava davvero e ci si preoccupava delle prese e della sporcizia della programmazione di rete. Quei giorni sono spariti per quasi tutte le lingue moderne: ci sono soluzioni più semplici.
L'essenza di ciò che stai descrivendo è quella di una coda dei messaggi . Queste sono cose che sono state costruite e possono essere utilizzate con un minimo di spese aggiuntive.
Esistono due approcci per lavorare con un messaggio che accoda i messaggi uno a uno e un modello di pubblicazione / sottoscrizione (spesso scritto "pubub").
L'essenza di one to one è che ci si connette al server che esegue una coda di messaggi e si mette un messaggio in coda, e il gioco è fatto. Allo stesso modo, puoi connetterti alla coda e ottenere un messaggio dalla coda.
Con un modello di pubblicazione / iscrizione hai qualcosa che sta spingendo i messaggi verso uno o più abbonati.
Ci sono molti altri argomenti avanzati che possono essere creati su questi ultimi con le code che inoltrano ad altre code, o che accettano selettivamente i messaggi o eseguono una chiamata di procedura remota su un altro sistema. La coda dei messaggi è la struttura sottostante per un lotto di diverse tecnologie.
Guardando RabbitMQ (solo uno dei tanti - ce ne sono molti di più là fuori) c'è un tutorial specifico per un singolo produttore e consumatore scritto in Python (e Java, e Ruby, e Php e C #) che possono essere trovati sotto la loro pagina tutorial .
Pi #2 starts running and connects to the server (who's IP will be static I guess) with a name he chooses. Pi #3 does the same as #2.
Avere un server statico è davvero l'approccio più semplice. Il server è lì e ti stai connettendo.
Tuttavia, se vuoi andare su "non è sempre un indirizzo IP statico" perché il tuo server dhcp non sta collaborando bene con questo, ci sono anche tecnologie per questo.
Comprendi che sto dicendo questo in quanto non ho mai usato RabbitMQ (ActiveMQ? WebSphere? sì ... Coniglio, no - ma ne ho sentito parlare bene) né sono stato più che un utente di questa tecnologia sotto altri nomi ...
Zeroconf. Questa è un'implementazione delle tecnologie note come rete di configurazione zero . L'idea è il tuo Pi # 1, quando avvierà il suo server annuncerà alla rete "Ho questo servizio disponibile!" e tutti gli altri possono quindi usarlo. Non importa dove Pi # 1 si trova sulla rete - è lì.
Ecco come funzionano alcune telecamere IP - guardi sulla tua rete locale e vedrai la videocamera trasmettere il suo indirizzo e un programma che può scoprirlo sulla rete, può farlo.
Specificamente per RabbitMQ, mi sono imbattuto in questo gist che sembra annunciare alla rete che "hey, c'è un server MQ qui "e ora il tuo Pi # 1 può essere visualizzato ovunque sulla rete e le cose funzioneranno. Perché funzionano sempre la prima volta che si affronta una tecnologia Anche se potrebbe richiedere un po 'di comprensione e approfondimento. Non suggerirei di farlo come primo passo: farlo funzionare con un server di messaggi in coda che funziona su un indirizzo IP statico, e allora iniziare a vedere come farlo trasmettere dall'indirizzo IP statico, e poi lascia che acquisisca un indirizzo dinamico. All'inizio non andare giù in quel particolare heh buca del coniglio.