java - SourcePollingChannelAdapter 创建

标签 java spring spring-integration

我使用 spring 和 spring-integration。我需要为 Feed 解析创建动态 SourcePollingChannelAdapter ,并在 Spring 上下文中注册。

      QueueChannel channel = (QueueChannel) context.getBean("rssFeedChannel");
      SourcePollingChannelAdapter adapter = new SourcePollingChannelAdapter();
      adapter.setApplicationContext(context);
      adapter.setBeanName("adapter.1");
      FeedEntryMessageSource source = new FeedEntryMessageSource(new URL("https://spring.io/blog.atom"), "news");
      source.setApplicationContext(context);
      source.setBeanName("source");
      adapter.setSource(source);
      adapter.setOutputChannel(channel);
      adapter.setTrigger(new PeriodicTrigger(1000));
      adapter.start();

我的应用程序配置:

<int:poller default="true" fixed-rate="5000"/>

    <int:channel id="rssFeedChannel">
        <int:queue capacity="40"/>
    </int:channel>

    <file:outbound-channel-adapter id="file" mode="APPEND" charset="UTF-8" directory="/tmp/si" filename-generator-expression="'SpringBlog'"/>
    <!-- With this work -->
    <!--<feed:inbound-channel-adapter id="news" channel="rssFeedChannel" url="https://spring.io/blog.atom">-->
        <!--<int:poller fixed-rate="5000"/>-->
    <!--</feed:inbound-channel-adapter>-->

    <int:transformer input-channel="rssFeedChannel" expression="payload.title + ' @ ' + payload.link + '#{systemProperties['line.separator']}'" output-channel="file"/>

但没有任何内容写入文件。请帮助修复错误。

最佳答案

  1. 您也必须将 FeedEntryMessageSource 设置为 bean。 applicationContext 注入(inject)。

  2. 您忘记调用adapter.afterPropertiesSet()。顺便说一句,FeedEntryMessageSource 实例也是如此。

请从另一方面分享您对采用这种手动方式的想法。为什么不依赖标准的控制反转原理?

关于java - SourcePollingChannelAdapter 创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31574395/

相关文章:

spring - 使用 gzip 压缩 rest 响应

java - 将bean注入(inject)枚举

java - Android:无法使用 null 启动服务:java.lang.NullPointerException

java - 如果我在 Spring boot 中对方法有多个映射,如何从 swagger ui 文档中仅隐藏一个映射

java - Controller 中所有方法的 Spring AOP 切入点

java - 处理 FTP 列表中的所有消息后停止 Spring Integration 应用程序

java - 在 Spring Integration 中处理异常时遇到问题

spring-integration - Spring Integration 最后一次成功的轮询时间戳

java - 在Java中调用命令行程序

Java GC 安全点