Миграция Spring Batch с 2.2 на 4.x (XML-конфигурация заданий на разделы - PullRequest
0 голосов
/ 04 февраля 2019

Я переношу задания Spring Batch Partition с конфигурацией XML в Spring batch 4.x.Я пытаюсь воспользоваться улучшением MessageChannelPartitionHandler, где оно ищет завершение удаленных шагов как с каналом ответа, так и с опросом источника данных.

Когда я использую эту конфигурацию:

<int:channel id="partitioned.jms.requests">
            <int:dispatcher task-executor="springbatch.partitioned.jms.taskExecutor"/>    
</int:channel>
<int:channel id="partitioned.jms.reply" />

    <bean id="partitioned.jms.handler" class="org.springframework.batch.integration.partition.MessageChannelPartitionHandler">
        <property name="messagingOperations">
            <bean class="org.springframework.integration.core.MessagingTemplate">
                <property name="defaultChannel" ref="partitioned.jms.requests"/>
            </bean>
        </property>
        <property name="stepName" value="process.partitioned.step"/>        
        <property name="gridSize" value="${process.step.partitioned.gridSize}"/>        
        <property name="dataSource" ref="springbatch.repositoryDataSource" />
        <property name="pollInterval" value="${springbatch.partition.verification.interval}"/>          
    </bean>

Шаг завершен, но я вижу ошибку в журналах.

no output-channel or replyChannel header available

Я посмотрел на класс и увидел, что могу добавить свойство replyChannel в класс MessageChannelPartitionHandler.Если я добавлю следующее:

<property name="replyChannel" ref="claim.acp.process.partitioned.jms.reply"/>      

Я получу сообщение об ошибке, что нужен канал для опроса.

Как создать опросный канал (исходя из той же очереди JMS)?

1 Ответ

0 голосов
/ 04 февраля 2019

Вам нужно показать остальную часть вашей конфигурации.

Если вы используете опрос БД для результатов, установите output-channel на исходящем шлюзе jms на "nullChannel", и ответы, полученные через JMS, будутбыть отброшены.

Или используйте адаптер исходящего канала (вместо шлюза) (и адаптер входящего канала на ведомых устройствах).Это позволяет избежать полного возврата ответов.

Вы должны установить pollRepositoryForResults на true.

Чтобы ответить на ваш конкретный вопрос

<int:channel id="replies>
    <int:queue />
<int:channel>
...