将Spring Batch与Kafka集成的最新(2019年)首选方式是什么?

时间:2019-03-20 22:18:47

标签: spring spring-integration spring-batch

这是I need current easy to follow instructions for configuring spring integration kafka from XML

的后续问题

Spring-integration-kafka在过去的几次迭代中已经发展了很多,并且许多旧示例不再起作用。

尤其是,从spring-batch世界过渡到spring集成世界的bean将不会实例化,因为KafkaTemplate类未实现MessagingTemplate。目前推荐的完成此集成的方法是什么?

<bean id="partitionHandler" class="org.springframework.batch.integration.partition.MessageChannelPartitionHandler">
    <property name="stepName" value="fm-step0002.messager"/>
    <property name="gridSize" value="3"/> 
    <property name="messagingOperations" ref="kafkaTemplate"/>
</bean>

这是我的POM中的一个片段,显示了我正在使用的库的版本:

        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-core</artifactId>
            <version>5.1.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-kafka</artifactId>
            <version>3.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-file</artifactId>
            <version>5.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.batch</groupId>
            <artifactId>spring-batch-core</artifactId>
            <version>4.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.batch</groupId>
            <artifactId>spring-batch-infrastructure</artifactId>
            <version>4.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.batch</groupId>
            <artifactId>spring-batch-integration</artifactId>
            <version>4.1.1.RELEASE</version>
        </dependency>

1 个答案:

答案 0 :(得分:2)

MessagingTemplate是Spring Integration的核心组件;它与您使用的代理(RabbitMQ,Kafka,JMS等)无关。

您使用默认通道(这是kafka出站端点的输入通道)配置模板。

请参见batch documentation(单击文档顶部的XML按钮将示例从Java更改为XML)。

该示例适用于JMS,但Kafka的配置类似。

<bean id="partitionHandler"
   class="org.springframework.batch.integration.partition.MessageChannelPartitionHandler">
  <property name="stepName" value="step1"/>
  <property name="gridSize" value="3"/>
  <property name="replyChannel" ref="outbound-replies"/>
  <property name="messagingOperations">
    <bean class="org.springframework.integration.core.MessagingTemplate">
      <property name="defaultChannel" ref="outbound-requests"/>
      <property name="receiveTimeout" value="100000"/>
    </bean>
  </property>
</bean>

<int:channel id="outbound-requests"/>
<int-jms:outbound-channel-adapter destination="requestsQueue"
    channel="outbound-requests"/>