Как ChunkMessageChannelItemWriter собирает ответы при удаленном пакетном распределении Spring?

StackOverflow https://stackoverflow.com//questions/24033484

Вопрос

Я пытаюсь реализовать удаленное разделение в пакете Spring, используя интеграцию Spring и amqp (rabbitmq).

Я не могу понять, как ChunkMessageChannelItemWriter собирает ответы в тесте удаленного фрагментирования ниже.

https://github.com/spring-projects/spring-batch/blob/master/spring-batch-integration/src/test/resources/org/springframework/batch/integration/chunk/RemoteChunkStepIntegrationTests-context.xml

Как это работает ?Отправляет ли он одно сообщение, ждет ответа, получает ответ, а затем снова второе сообщение, ждет ответа на второе сообщение и получает ответ на второе сообщение и так далее?

Или он отправляет все сообщения асинхронно и ждет ответов, а затем получает ответы по мере их поступления на канал ответа?

Если мы ссылаемся на документацию по удаленному фрагментированию здесь

http://docs.spring.io/spring-batch/reference/html/springBatchIntegration.html#asynchronous-processors

он использует входящие и исходящие адаптеры.Если ChunkMessageChannelItemWriter получает ответы, зачем нам адаптеры?а на подчиненной стороне почему используются оба адаптера и активатор службы?

Может кто-нибудь, пожалуйста, помогите мне понять, как это работает, поскольку это трудно понять из документации.

Это было полезно?

Решение

Это всего лишь тестовый пример — все работает локально — посмотрите на Тестовый пример JMS для более реального примера.Модуль записи элементов канала отправляет все фрагменты в JMS с помощью адаптера исходящего канала.

Удаленная сторона (контейнер прослушивателя JMS) получает фрагменты, обрабатывает их и отправляет ответы на replies очередь.

Каждый раз, когда средство записи вызывается для записи фрагмента, оно проверяет наличие ответов и при необходимости приостанавливает работу, если превышен предел регулирования.

Когда все куски записаны, в afterStep(), он ждет остальных результатов.

Все это работает так же, как и в локальном тестовом примере, поскольку обработчик фрагментов записывает ответы в канал очереди.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top