Apache kafka 面向块的处理或Tasklet

Apache kafka 面向块的处理或Tasklet,apache-kafka,spring-batch,Apache Kafka,Spring Batch,这项工作包括: 使用来自Kafka REST客户端的电子邮件列表(这是 限制,我们不能使用本机java客户端) 从Base64解码内容 将其存储在数据库中(通过电子邮件记录) 我不确定我是否可以/应该将其实现为一个面向块的过程,还是将其保持为一个简单的Tasklet 我已经把它作为一个小任务来做了,所以我想知道它是否可能以另一种方式实现,以及它是否有任何好处 这是我从REST客户端消费的内容 [ { "value": "base64encoded" }, { "val

这项工作包括:

  • 使用来自Kafka REST客户端的电子邮件列表(这是 限制,我们不能使用本机java客户端)
  • 从Base64解码内容
  • 将其存储在数据库中(通过电子邮件记录)
  • 我不确定我是否可以/应该将其实现为一个面向块的过程,还是将其保持为一个简单的Tasklet

    我已经把它作为一个小任务来做了,所以我想知道它是否可能以另一种方式实现,以及它是否有任何好处

    这是我从REST客户端消费的内容

    [
      {
        "value": "base64encoded"
      },
      {
        "value": "base64encoded"
      },
      ...
    ]
    
    其中编码值是电子邮件地址数组
    [“item1”、“item2”]

    由于内容是字符串数组,我在自定义
    ItemReader
    read()
    方法上返回一个
    List
    ,但我认为这不对,因为它应该返回一个项,不是吗

    我也在读卡器上解码,还是应该在ItemProcessor上解码


    作为一名编写者,我选择了seed
    jdbccbatchitemwriter
    ,但我不确定应该如何配置它

    我会从一个问题开始评估,如果出现问题会发生什么?Spring Batch通过侦听器、重试和跳过机制等提供了许多处理错误的工具。其中大多数都无法通过原始的
    Tasklet
    实现。其次,如果您正在进行基于项的处理(也就是一次迭代一个项),即使您正在添加并行性,我仍然建议使用基于块的处理。只有在经历了这两种想法之后,我会考虑做一个原始的<代码> taskLe> /Case>实现。

    我在这里看到的主要问题是,我不能在读取一个调用中的所有内容时将读取过程块化。这并不意味着你不能将它块化……这只是意味着你在启动时读取一次,并将其块化,因为每次调用到“代码> Read())/CODE >被调用。