Java 如何在Spring集成中获取rss feedChannel同步消息的源?

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); } 这是动态

我有一个使用spring集成的rss提要阅读器。我想学习一个rss项目的源代码

示例项:

  • 标题:“最高将领:利比亚需要更多地面部队”
  • 链接:“cnn.com/blabla”
  • 发布日期:“2016-06-22 10:10:10”
我想知道哪个rss链接将此项目发送给我,因为我在init()函数中设置了它

结果:

这是我的提要频道配置

@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());