当前位置: 首页 > 知识库问答 >
问题:

作业启动网关和持久队列

贺福
2023-03-14

我向连接到JobLaunchingGateway的spring-integration通道发送一条消息,对于每个消息,JobLaunchingGateway尝试启动一个新的TaskExecutor。

让通道由一个持久队列(例如ActiveMQ)支持,让任务执行器池大小等于2。

我想对系统进行配置,以便当executor池大小已经使用时,新消息不会被JobLaunchingGateway使用,而是保留在持久化队列中。

共有1个答案

红鸿运
2023-03-14

您可以向TE添加队列限制,并对RejectedExecutionHandler`使用CallerBlocksPolicy'。

但是,在失败的情况下,您将丢失队列中的任务。

通常最好使用消息驱动通道,将并发设置为两个并在侦听器容器线程上运行作业,而不是使用TE来运行作业。

 类似资料:
  • 问题内容: 我对Java Quartz不太熟悉,我们只是使用了每天安排的测试工作。对于我们的Struts2 Web应用程序,我们希望运行一些计划在一天中不同时间的日常工作。作业应处于持久状态,以便即使由于服务器关闭/应用程序失败而导致作业失败,也应在服务器启动后稍后重新执行。我还可以将作业的状态/结果存储在DB中,以便监视作业。任何的意见都将会有帮助。 - 谢谢 问题答案: 无论您提到什么,都可以

  • 我正在阅读JPA 2.1规范,有这个片段: 通过调用新实体实例上的persist方法或级联persist操作,新实体实例将同时成为托管实例和持久实例。应用于实体X的持久化操作的语义如下:。。。 是否可以在不显式调用persist()方法的情况下调用persist操作,或者persist操作始终必须是通过调用persist()的触发器? 假设我有两个实体A和B,其中A与B有一个域(cascade=P

  • 石英2.2 我在运行时动态创建和调度Quartz作业,并将Quartz配置为JDBC-Job-Store。这些作业需要在应用程序执行之间保持不变。在作业执行期间,我需要访问完整的Spring上下文(Spring管理的bean和JPA事务)。 然而,如果我试图将任何东西自动加入到我的工作中,那么我会得到一个错误,比如…“通过字段MyAutowiredField表示的不满足的依赖项” 我想不通。我已经

  • 我对Spring和RabbitMQ有以下配置: 为了防止这种情况,我想创建持久队列(因为这些队列的持久度设置为false,自动删除设置为true)。如果不是,我想在这些队列上设置一些过期时间(例如,1小时或其他时间)。从RabbitMQ文档来看,我们似乎可以在头中传递这些值,但是,这只适用于版本3.6.0以后的版本,因为我们有3.5.4,它不是一个选项。 有没有其他方法可以配置它?(另一种方法是为

  • 我正在使用quartz调度器来调度一个Spring批处理作业。应用程序启动时没有任何异常,但它从不激发任何作业。 它运行得很成功,但经过更多的开发后,它停止了工作。我无法弄清楚我到底改变了什么配置导致了这一点。 有谁可以建议检查点在使用“JobRepositoryFactoryBean”,如果我没有或问题在其他地方。