Как ChunkMessageChannelItemWriter собирает ответы при удаленном пакетном распределении Spring?
-
21-12-2019 - |
Вопрос
Я пытаюсь реализовать удаленное разделение в пакете Spring, используя интеграцию Spring и amqp (rabbitmq).
Я не могу понять, как ChunkMessageChannelItemWriter собирает ответы в тесте удаленного фрагментирования ниже.
Как это работает ?Отправляет ли он одно сообщение, ждет ответа, получает ответ, а затем снова второе сообщение, ждет ответа на второе сообщение и получает ответ на второе сообщение и так далее?
Или он отправляет все сообщения асинхронно и ждет ответов, а затем получает ответы по мере их поступления на канал ответа?
Если мы ссылаемся на документацию по удаленному фрагментированию здесь
он использует входящие и исходящие адаптеры.Если ChunkMessageChannelItemWriter получает ответы, зачем нам адаптеры?а на подчиненной стороне почему используются оба адаптера и активатор службы?
Может кто-нибудь, пожалуйста, помогите мне понять, как это работает, поскольку это трудно понять из документации.
Решение
Это всего лишь тестовый пример — все работает локально — посмотрите на Тестовый пример JMS для более реального примера.Модуль записи элементов канала отправляет все фрагменты в JMS с помощью адаптера исходящего канала.
Удаленная сторона (контейнер прослушивателя JMS) получает фрагменты, обрабатывает их и отправляет ответы на replies
очередь.
Каждый раз, когда средство записи вызывается для записи фрагмента, оно проверяет наличие ответов и при необходимости приостанавливает работу, если превышен предел регулирования.
Когда все куски записаны, в afterStep()
, он ждет остальных результатов.
Все это работает так же, как и в локальном тестовом примере, поскольку обработчик фрагментов записывает ответы в канал очереди.