我正在使用Spring Integration和Feed入站通道适配器来处理新闻RSS提要(我认为这很棒:)。我还想将一些API提供的其他新闻源用于同一个频道。 API只是一个HTTP端点,它返回JSON中的新闻文章列表。这些字段与RSS非常相似,即标题,描述,发布日期可以映射到SyndEntry对象。
理想情况下,我想使用Feed入站通道适配器中可用的相同功能来处理重复的条目等。是否可以自定义Feed入站通道适配器来处理和映射JSON?
任何示例代码或指针都非常有用。
答案 0 :(得分:0)
嗯,不。 bwasta = (Button) findViewById(R.id.btDes);
final Button bwasta = (Button) findViewById(R.id.btDes);
bwasta.setEnabled(false);
bwasta.postDelayed(new Runnable() {
public void run() {
bwasta.setEnabled(true);
完全基于Rome Tools,它只处理XML模型。
我担心您必须创建自己的组件,这些组件将为这些JSON记录生成FeedEntryMessageSource
个实例。这可能类似于SyndEntry
,基于HttpRequestExecutingMessageHandler
和RestTemplate
默认情况下存在。
您可以尝试将MappingJackson2HttpMessageConverter
配置为HttpRequestExecutingMessageHandler
,并期望在回复中包含setExpectedResponseType(SyndFeedImpl.class)
内容类型。
要实现“处理重复条目”,您可以考虑在之后使用Idempotent Receiver模式。 application/json
应基于MessageSelector
且真正预先形成与MetadaStore
中的逻辑类似的逻辑:
FeedEntryMessageSource
其中 if (lastModifiedDate != null) {
this.lastTime = lastModifiedDate.getTime();
}
else {
this.lastTime += 1; //NOSONAR - single poller thread
}
this.metadataStore.put(this.metadataKey, this.lastTime + "");
...
if ((entryDate != null && entryDate.getTime() > this.lastTime)
是entry
payload
FeedEntry
来自splitted
的结果。