In che modo ChunkmessageChanNanelItemwriter raccoglie le risposte nel Chunking remoto batch di primavera?
-
21-12-2019 - |
Domanda
Sto cercando di implementare il blocco remoto nel batch di primavera usando l'integrazione della molla e l'AMQP (RabbitMQ).
Non sono in grado di capire come funziona ChunkmessageChanNelitemwriter risponde nel test di Chunking remoto sotto
Come funziona? Invia un messaggio, attendi la sua risposta, riceve la sua risposta e poi di nuovo secondo messaggio, attendere il secondo messaggio Rispondi e riceve la seconda risposta del messaggio e così via?
o invia tutti i messaggi in modo asincrono e attendi le risposte e riceve le risposte in quanto arriva sul canale di risposta?
Se ci riferiamo alla documentazione di Chunking remoto qui
Utilizza adattatori in entrata e in uscita. Se ChunkmessageChanNanelItemwriter riceve risposte Perché abbiamo bisogno di adattatori? e al lato slave perché sono utilizzati adattatori e attivazione del servizio entrambi utilizzati?
Qualcuno può aiutarmi a capire come funziona come è difficile da capire dalla documentazione.
Soluzione
È solo un caso di prova - tutto funziona localmente - Guarda il custodia di prova JMS per un esempio più realistico.Lo scrittore dell'oggetto del canale invia tutti i blocchi a JMS utilizzando un adattatore canale in uscita.
Il lato remoto (contenitore Listener JMS) riceve i blocchi, li elabora e invia le risposte alla coda replies
.
Ogni volta che lo scrittore è chiamato a scrivere un pezzo, controlla le risposte e le sospende, se necessario, se il limite di farfalla viene superato.
Quando tutti i pezzi sono scritti, in afterStep()
, attende il resto dei risultati.
Tutto funziona lo stesso con il caso di test locale perché il gestore del chunk scrive le risposte a un canale coda.