Como o ChunkMessageChannelItemWriter coleta respostas no agrupamento remoto em lote do Spring?
-
21-12-2019 - |
Pergunta
Estou tentando implementar a fragmentação remota em lote de primavera usando integração de primavera e amqp (rabbitmq).
Não consigo entender como o ChunkMessageChannelItemWriter coleta respostas no teste de agrupamento remoto abaixo
Como funciona ?Ele envia uma mensagem, aguarda sua resposta, recebe sua resposta e, em seguida, novamente a segunda mensagem, aguarda a resposta da segunda mensagem e recebe a resposta da segunda mensagem e assim por diante?
Ou envia todas as mensagens de forma assíncrona e aguarda respostas e depois recebe respostas à medida que chegam no canal de resposta?
Se nos referirmos à documentação de chunking remoto aqui
ele usa adaptadores de entrada e saída.Se ChunkMessageChannelItemWriter recebe respostas, por que precisamos de adaptadores?e no lado escravo, por que adaptadores e ativadores de serviço são usados?
Alguém pode me ajudar a entender como funciona, pois é difícil de entender na documentação.
Solução
Isso é apenas um caso de teste - tudo roda localmente - veja o Caso de teste JMS para um exemplo mais real.O gravador de item de canal envia todos os pedaços para JMS usando um adaptador de canal de saída.
O lado remoto (contêiner ouvinte jms) recebe os pedaços, processa-os e envia as respostas para o replies
fila.
Cada vez que o escritor é chamado para escrever um pedaço, ele verifica as respostas e suspende, se necessário, se o limite de aceleração for excedido.
Quando todos os pedaços são escritos, em afterStep()
, ele aguarda o restante dos resultados.
Tudo isso funciona da mesma forma com o caso de teste local porque o manipulador de blocos grava as respostas em um canal de fila.