2016-11-12 196 views
3

我打算为我的项目使用Spring云流。我看到有内置的触发源应用程序启动器。我想要做的就是使用石英作业调度程序作为源应用程序。这是为了允许来自应用程序的动态作业计划。有没有一个很好的样本来实现这个目标?Spring Cloud Stream + Quartz

我发现了这个。 spring integration + cron + quartz in cluster?。该解决方案涉及获取对入站通道适配器的引用。我使用Annotation来定义入站通道适配器。如何获得对该对象的引用,以便我可以在解决方案中提到启动/停止。

这是我如何定义入站通道适配器。

@Bean 
@InboundChannelAdapter(autoStartup = "false", value = SourceChannel.CHANNEL_NAME, poller = @Poller(trigger = "fireOnceTrigger")) 
public MessageSource<String> timerMessageSource() { 
    return new MessageSource<String>() { 
     public Message<String> receive() { 
      System.out.println("******************"); 
      System.out.println("At the Source"); 
      System.out.println("******************"); 
      String value = "{\"value\":\"hi\"}"; 
      System.out.println("Sending value: " + value); 
      return MessageBuilder.withPayload(value).setHeader(MessageHeaders.CONTENT_TYPE, "application/json").build(); 
     } 
    }; 
} 

回答

1

GitHub上的相关问题:https://github.com/spring-projects/spring-integration-java-dsl/issues/138

建立自动创建的端点bean名字的算法是这样的:

名称与此算法生成的豆:*本MessageHandlerMessageSource@Bean@Bean上的方法名称或名称属性获取其自己的标准名称。这适用于@Bean方法中没有消息注释。 * AbstractEndpoint bean名称使用以下模式生成:[configurationComponentName].[methodName].[decapitalizedAnnotationClassShortName]。例如,上面定义的consoleSource()定义的端点(SourcePollingChannelAdapter)的bean名称如下:myFlowConfiguration.consoleSource.inboundChannelAdapter

查看Reference Manual了解更多信息。

+0

谢谢。这工作。 –

相关问题