面向块的处理或Tasklet

时间:2018-04-06 08:32:03

标签: apache-kafka spring-batch

工作包括:

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

    我已经把它作为一个Tasklet来做,所以我想知道它是否可能以其他方式,如果它有任何好处。

    这是我从REST客户端使用的内容

    [
      {
        "value": "base64encoded"
      },
      {
        "value": "base64encoded"
      },
      ...
    ]
    

    其中编码值是电子邮件地址数组["item1", "item2"]

    由于内容是字符串数组,我在自定义List<String>的{​​{1}}方法上返回一个read(),但我不认为这是正确的,因为它应该退货,不是吗?

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

    作为一名作家,我选择ItemReader,但我不确定应如何配置它。

1 个答案:

答案 0 :(得分:1)

我会开始对问题进行评估,如果出现问题会怎样? Spring Batch提供了许多通过侦听器,重试和跳过机制等处理错误的工具。大多数都不能通过原始Tasklet实现来获得。其次,如果你正在进行基于项目的处理(也就是一次迭代一个项目),即使你要添加并行性,我仍然建议使用基于块的处理。只有在完成这两个想法后,我才会考虑做一个原始的Tasklet实施。