我正在使用Spring Integration和Feed入站通道适配器来处理新闻RSS提要(我认为这很棒:) . 我还想将一些API提供的其他新闻源用于同一个 Channels . API只是一个HTTP endpoints ,它返回JSON中的新闻文章列表 . 这些字段与RSS非常相似,即有一个 Headers ,描述,发布日期可以映射到SyndEntry对象 .
理想情况下,我想使用Feed入站通道适配器中可用的相同功能来处理重复的条目等 . 是否可以自定义Feed入站通道适配器来处理和映射JSON?
任何示例代码或指针都非常有用 .
1 回答
好吧,不 .
FeedEntryMessageSource
完全基于Rome Tools,它仅处理XML模型 .我担心你必须创建自己的组件,它将为那些JSON记录生成
SyndEntry
实例 . 这可能真的像HttpRequestExecutingMessageHandler
,基于RestTemplate
与MappingJackson2HttpMessageConverter
无论如何都是默认存在的 .您可以尝试将
HttpRequestExecutingMessageHandler
配置为setExpectedResponseType(SyndFeedImpl.class)
,并期望在响应中具有application/json
content-type .要实现"deals with duplicate entries",您可以考虑使用Idempotent Receiver模式 .
MessageSelector
应该基于MetadaStore
并且真正预先形成类似于FeedEntryMessageSource
中的逻辑:其中
entry
是payload
(FeedEntry
)的splitted
结果来自HttpRequestExecutingMessageHandler
.