Feed Adapter(适配器)

Spring 集成通过馈送适配器为联合提供支持。 执行工作以《罗马框架》为基础。

您需要将此依赖项包含在项目中:

<dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-feed</artifactId> <version>6.0.0</version></dependency>

Web 联合是一种发布材料的方法,例如新闻报道、新闻稿、博客文章和其他项目,通常在网站上可用,但也以 RSS 或 ATOM 等源格式提供。

Spring 集成通过其“feed”适配器为Web联合提供支持,并为其提供了方便的基于命名空间的配置。 若要配置“feed”命名空间,请在 XML 配置文件的标头中包含以下元素:

xmlns:int-feed=”http://www.springframework.org/schema/integration/feed”xsi:schemaLocation=”http://www.springframework.org/schema/integration/feed https://www.springframework.org/schema/integration/feed/spring-integration-feed.xsd”馈送入站通道适配器

您真正需要为检索源提供支持的唯一适配器是入站通道适配器。 它允许您订阅特定的 URL。 以下示例显示了可能的配置:

@Configuration@EnableIntegrationpublic class ContextConfiguration { @Value(“org/springframework/integration/feed/sample.rss”) private Resource feedResource; @Bean public IntegrationFlow feedFlow() { return IntegrationFlow .from(Feed.inboundAdapter(this.feedResource, “feedTest”) .preserveWireFeed(true), e -> e.poller(p -> p.fixedDelay(100))) .channel(c -> c.queue(“entries”)) .get(); }}

在前面的配置中,我们订阅的是由属性标识的 URL。??url??

检索新闻项时,它们将转换为消息并发送到由属性标识的频道。 每条消息的有效负载都是一个实例。 每个都封装了有关新闻项的各种数据(内容、日期、作者和其他详细信息)。??channel????com.rometools.rome.feed.synd.SyndEntry??

入站源通道适配器是轮询使用者。 这意味着您必须提供轮询器配置。 但是,关于提要,您必须了解的一件重要事情是,它的内部工作原理与大多数其他轮询消费者略有不同。 启动入站源适配器时,它会执行第一次轮询并接收实例。 该对象包含多个对象。 每个条目都存储在本地条目队列中,并根据属性中的值释放,以便每条消息都包含一个条目。 如果在从条目队列中检索条目期间,队列变为空,那么适配器将尝试更新源,从而用更多条目(实例)填充队列(如果有)。 否则,下一次轮询源的尝试由轮询器的触发器确定(在前面的配置中每十秒一次)。??com.rometools.rome.feed.synd.SyndFeed????SyndEntry????max-messages-per-poll????SyndEntry??

重复条目

轮询源可能会导致条目已被处理(“我已经阅读了该新闻,为什么您再次向我显示它? Spring 集成提供了一种方便的机制,无需担心重复条目。 每个源条目都有一个“发布日期”字段。 每次生成并发送新内容时,Spring 集成都会将最新发布日期的值存储在策略的实例中(请参阅元数据存储)。 用于保留最新发布的日期。??Message????MetadataStore????metadataKey??

其他选项

从版本 5.0 开始,已弃用的选项已被删除,并提供了 的重载构造函数。 当源不是 HTTP 端点而是任何其他资源(例如 FTP 上的本地或远程)时,这很有用。 在逻辑中,这样的资源(或提供)被解析为前面提到的对象进行处理。 您还可以将自定义(例如,使用选项)实例注入 .??com.rometools.fetcher.FeedFetcher????FeedEntryMessageSource????org.springframework.core.io.Resource????FeedEntryMessageSource????URL????SyndFeedInput????SyndFeed????SyndFeedInput????allowDoctypes????FeedEntryMessageSource??

如果与源的连接需要一些自定义,例如连接和读取超时,则必须使用扩展及其覆盖,而不是普通注入到 . 例如:??org.springframework.core.io.UrlResource????customizeConnection(HttpURLConnection)????URL????FeedEntryMessageSource??

@Bean@InboundChannelAdapter(“feedChannel”)FeedEntryMessageSource feedEntrySource() { UrlResource urlResource = new UrlResource(url) { @Override protected void customizeConnection(HttpURLConnection connection) throws IOException { super.customizeConnection(connection); connection.setConnectTimeout(10000); connection.setReadTimeout(5000); } }; return new FeedEntryMessageSource(urlResource, “myKey”);}

明天的希望,让我们忘了今天的痛苦

Feed Adapter(适配器)

相关文章:

你感兴趣的文章:

标签云: