私は春の統合を使用してRSSフィードリーダーを持っています。私はRSSアイテムのソースを学びたい。Spring Integrationのrss feedChannel SyndEntryメッセージの入手方法?
例項目:
- タイトル: "トップ一般:リビアに必要なその他の地上部隊"
- リンク: "cnn.com/blabla"
- pubDateの:「2016年6月22日10 :10:10"
私はINIT()関数でそれを設定しているため、RSSのリンクが私にこのアイテムを送信するかを知りたいです。
結果:http://rss.cnn.com/rss/edition.rss
はここに私の供給チャネルの設定です。
@Bean
public MessageChannel feedChannel() {
return new QueueChannel(500);
}
これは動的フィードチャネルクリエーターです。私はDBからrssリンクを読み、チャンネルを作成します。
@PostConstruct
public void init() throws Exception{
List<RssLink> rssLinks = rssLinkService.findAll();
if(rssLinks != null && rssLinks.size() > 0)
{
for(RssLink rss : rssLinks) {
QueueChannel channel = (QueueChannel) context.getBean("feedChannel");
SourcePollingChannelAdapter adapter = new SourcePollingChannelAdapter();
adapter.setApplicationContext(context);
adapter.setBeanName("adapter." + rss.getSource().getName());
FeedEntryMessageSource source = new FeedEntryMessageSource(new URL(rss.getLink()), rss.getSource().getName());
source.setApplicationContext(context);
source.setBeanName(rss.getSource().getDomain());
source.setBeanFactory(beanFactory);
source.afterPropertiesSet();
adapter.setSource(source);
adapter.setOutputChannel(channel);
PeriodicTrigger trigger = new PeriodicTrigger(300000);
adapter.setTrigger(trigger);
adapter.setMaxMessagesPerPoll(100);
adapter.setBeanFactory(beanFactory);
adapter.afterPropertiesSet();
adapter.start();
}
}
}
これはチャンネル内の項目の読者です。
@ServiceActivator(inputChannel = "feedChannel")
public void feedChannel(Message<SyndEntry> message) {
SyndEntry payload = message.getPayload();
MessageHeaders header = message.getHeaders();
Feed feed = new Feed();
feed.setLink(payload.getLink());
feed.setTitle(payload.getTitle());
//feed.setSource(I don't know which rss link send me this item);
}
だから私は、アイテムがどのRSSリンクの属する知るためにServiceActivatorにおけるペイロードのFeedEntryMessageSourceを取りに行くしたいです。私は、この行でそれは。rss.getSource()のgetName() 'を設定:
FeedEntryMessageSource source = new FeedEntryMessageSource(new URL(rss.getLink()), rss.getSource().getName());
回答ありがとうございますが、payload.getSource()はすべてのフィードでnullです。私はsthを逃していますか? – Richard