Spring集成多轮询器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring集成多轮询器相关的知识,希望对你有一定的参考价值。
我有一个集成,它具有两个不同的集成流程。因此,我将这些流程分为两个不同的类。假设第一个集成流程必须每两个小时工作一次,而另一个则每一个小时工作一次。
// Class1
@Bean
public PollerMetadata poller1()
return Pollers.fixedRate(2, TimeUnit.HOURS, 1).get();
@Bean
public IntegrationFlow start()
return IntegrationFlows
.from("getOrders")
.split()
.channel(c -> c.queue(1))
.publishSubscribeChannel(c -> c
.subscribe(s -> s.channel(SECOND_FLOW)))
.get();
@Bean
public IntegrationFlow flow2()
return IntegrationFlows.from(SECOND_FLOW).
...;
// Class2
@Bean
public PollerMetadata poller2()
return Pollers.fixedRate(1, TimeUnit.HOURS, 1).get();
@Bean
public IntegrationFlow start()
return IntegrationFlows
.from("getRequests")
.split()
.channel(c -> c.queue(1))
.publishSubscribeChannel(c -> c
.subscribe(s -> s.channel(SECOND_FLOW)))
.get();
@Bean
public IntegrationFlow flow2()
return IntegrationFlows.from(SECOND_FLOW).
...;
使用此实现,由于上下文中没有默认轮询器可用,应用程序运行失败。
最佳方法是什么?
答案
您需要从透视图位置指向您的PollerMetadata
豆之一。如果您谈论IntegrationFlow
和某些端点轮询这些队列之一,则有一个相应的选项,例如:
.handle(..., e -> e.poller(PollerMetadata))
https://docs.spring.io/spring-integration/docs/current/reference/html/dsl.html#java-dsl-endpoints
以上是关于Spring集成多轮询器的主要内容,如果未能解决你的问题,请参考以下文章
Spring 批处理作业应仅在 Spring 集成文件轮询器轮询文件后执行一次