【问题标题】:Spring batch - configure number of threadsSpring批处理 - 配置线程数
【发布时间】:2019-01-18 10:40:01
【问题描述】:

我已经用maxPoolSize 1 和throttleLimit 1 配置了TaskExecutor,我看到的是它正在运行2 个线程。我现在想将我的 Spring Batch 应用程序用作单线程,并在以后需要时通过增加属性文件中的线程数来配置此功能。问题是为什么当我提到池大小和油门限制为 1 时它会运行 2 个线程。

我是怎么找到它的?

我正在设置

.throttleLimit(1)

asyncTaskExecutor.setConcurrencyLimit(1);

我将我的TaskExecutor 命名为"poller_batch_thread",并在 read() 方法中打印以"poller_" 开头的线程名称,这就是我在日志中看到的内容:

2019-01-21 10:08:50 INFO  m.d.s.a.b.reader.PortalMessageReader - Portal Message Read by Thread id 115 - Thread name: poller_batch_thread115
2019-01-21 10:08:50 INFO  m.d.s.a.b.reader.PortalMessageReader - Portal Message Read by Thread id 116 - Thread name: poller_batch_thread116

【问题讨论】:

  • 提供更多关于您如何发现它正在运行 2 个线程的详细信息。
  • 你是如何断定它正在运行两个线程的?你确定这两个线程不是主线程+池的(单)线程之和吗?
  • 我已经更新了我的问题。

标签: spring spring-batch


【解决方案1】:

如前所述,我想知道它是否不是主线程 + 池的线程。 您正在使用任务执行器,因此 Spring Batch 可能正在切换到主/从模式。 我建议您进行一些调试并确定使用了哪个 Tasklet 实现并观察“执行”方法,以便您了解“幕后”所做的事情:)。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2021-03-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2015-04-01
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    相关资源
    最近更新 更多