我正在努力实现一个缓冲区,以便执行各种工作。 我正在开发一个基于Spring的项目。 我决定使用Spring Integration来实现我的目标。我参加了一个Cafè示例项目,以了解SI的工作原理。
为了演示Spring Integration,我实现了一个表,我动态插入要执行的作业。 该表是“网关”。然后我配置了路由器和各种通道。
我不完全理解的是轮询器元素必须检查“网关”中是否存在新作业。 这是对的吗?
如果是,我该如何配置轮询器? 提前致谢! 这里是xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:int="http://www.springframework.org/schema/integration"
xmlns:int-feed="http://www.springframework.org/schema/integration/feed"
xmlns:int-stream="http://www.springframework.org/schema/integration/stream"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration.xsd
http://www.springframework.org/schema/integration/stream
http://www.springframework.org/schema/integration/stream/spring-integration-stream.xsd">
<int:gateway id="usersToSend" service-interface="it.stasbranger.spidly.rss.UsersToSend" />
<int:channel id="channel" />
<int:channel id="providers"/>
<int:router input-channel="providers" ref="providerRouter" method="resolveProviderChannel"/>
<int:channel id="twitterChannel">
<int:queue capacity="10"/>
</int:channel>
<int:service-activator input-channel="twitterChannel" ref="twitterService" method="updateStatusByProfile"/>
<int:channel id="facebookChannel">
<int:queue capacity="10"/>
</int:channel>
<int:service-activator input-channel="facebookChannel" ref="facebookService" method="updateStatusByProfile"/>
<int:channel id="linkedinChannel">
<int:queue capacity="10"/>
</int:channel>
<int:service-activator input-channel="linkedinChannel" ref="linkedinService" method="writeSlogan2Linkedin"/>
<bean id="twitterService" class="it.social.TwitterService"/>
<bean id="facebookService" class="it.social.FacebookService"/>
<bean id="linkedinService" class="it.social.LinkedinService"/>
<int:poller id="poller" default="true">
</int:poller>
FB
答案 0 :(得分:2)
<gateway/>
未被轮询,它们是&#34;消息驱动的&#34;因为呼叫者&#34;发送&#34;使用网关将消息传入流程。
对于轮询方案,使用<int:inbound-channel-adapter/>
轮询一个方法(在轮询器的时间表上),寻找要做的工作。
如果方法返回null,则轮询器返回休眠状态(直到下一个触发器)。如果方法返回值,则将消息发送到通道。