Java 如何在Spring集成中获取rss feedChannel同步消息的源?
我有一个使用spring集成的rss提要阅读器。我想学习一个rss项目的源代码 示例项:Java 如何在Spring集成中获取rss feedChannel同步消息的源?,java,rss,spring-integration,feed,channel,Java,Rss,Spring Integration,Feed,Channel,我有一个使用spring集成的rss提要阅读器。我想学习一个rss项目的源代码 示例项: 标题:“最高将领:利比亚需要更多地面部队” 链接:“cnn.com/blabla” 发布日期:“2016-06-22 10:10:10” 我想知道哪个rss链接将此项目发送给我,因为我在init()函数中设置了它 结果: 这是我的提要频道配置 @Bean public MessageChannel feedChannel() { return new QueueChannel(500); } 这是动态
- 标题:“最高将领:利比亚需要更多地面部队”
- 链接:“cnn.com/blabla”
- 发布日期:“2016-06-22 10:10:10”
@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();
}
}
}
我看到您在
rss.getLink()
和rss.getSource().getName()之间有一个直接链接。那么,如何使用您的@ServiceActivator
像有效载荷.getSource().getUri()
一样,从您的rssLinkService
中检索所需的名称
我看到您在rss.getLink()
和rss.getSource().getName()
之间有一个直接链接。那么,如何使用@ServiceActivator
像有效载荷.getSource().getUri()
一样,从rssLinkService
中检索所需的名称呢?谢谢您的回答,但是对于所有提要,有效载荷.getSource()都是空的。我遗漏了什么吗?谢谢你的回答,但是payload.getSource()对于所有提要都是空的。我错过了什么吗?
@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);
}
FeedEntryMessageSource source = new FeedEntryMessageSource(new URL(rss.getLink()), rss.getSource().getName());