【问题标题】:Spring Integration ftp Thread processSpring集成ftp线程流程
【发布时间】:2016-06-17 14:51:24
【问题描述】:

我正在使用一个已经使用线程运行的 bpmn 进程,并且还使用了运行任务调度程序线程的 spring ftp,但我发现应用程序无法从线程切换。有什么方法可以在没有任何中断的情况下调用任务调度程序进程,我正在使用 InboundchannelAdapter 从 FTP 复制文件。请提出任何可行的方法来解决此问题。

【问题讨论】:

    标签: spring-integration spring-integration-sftp


    【解决方案1】:

    我认为您的问题没有任何问题。老实说,这还不清楚。

    请说得更具体一些,有时分享一些代码/config/logs/stack-trace 真的很有用。更多信息,更多机会获得快速正确的答案。

    我猜你的问题是你从 FTP 下载文件并在同一个线程中运行一个 BPM 进程,该进程最终可能会阻塞等待某些参与者操作。

    为此,您应该将 <poller> 上的 Spring Integration 流程转移到不同的线程,并且不要窃取任务调度程序资源。对于整个系统来说,它们真的非常昂贵。考虑为<poller> 上的task-executor 引用使用足够大的ThreadPoolTaskExecutor。还有一个ExecutorChannel 为您提供类似的线程转换功能。

    【讨论】:

    • 感谢 Artem,但问题是,从 FTP 复制文件一段时间后,来自 FTP 的线程(任务调度程序)运行正常,它会调用 BPM 进程。 bpm 进程持续运行,它正在使用 [http-nio-8082-exec-3] 线程,其范围类似于 ftp(1-10 线程)。FTP 进程正在使用此 [task-scheduler-3]( 1-10),在某个 FTP 进程跳过 BPM 进程阶段之后,有时不是从第一步开始,而是进入第三步。我真的很担心这个。请指教,有没有办法避免任务调度程序线程进程跳过。
    • 嗯,这没有任何意义,你应该在那里修改你的逻辑。您可能有一些竞争条件导致您进入错误的分支。另一方面,http-nio-8082-exec-3 告诉我它与来自 Web 的一些用户请求有关,同时轮询器的进程(FTP 入站通道适配器)是独立的并且永远工作。这就是当文件从本地 FTP 出现时您可能没有 BPM 流程的原因。
    • 这种情况有时会发生,并且使用任务调度线程任务来处理 bpmn 进程,此外,这似乎是 bpmn 进程的问题,其中 bpmn 的逻辑是直接调用启动使用 startProcessInstanceByKey 的进程,我无法控制进程将自动启动的 bpmn 代码,并且那里有一个身份不明的跟踪。我想这不是因为任务调度程序。如果您对此有任何想法,请分享.. 谢谢 Artem!
    • 是的......对不起,这已经超出了我的知识范围。也许您可以以某种方式使 startProcessInstanceByKey 在单独的线程中完成其工作,而不是 BPM 启动的线程...
    猜你喜欢
    • 2016-03-02
    • 2021-07-09
    • 2017-07-30
    • 1970-01-01
    • 2015-01-16
    • 2023-04-07
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多