2016-11-12 11 views
3

私のプロジェクトにSpring Cloud Streamを使用する予定です。 Triggerのソースアプリケーションスターターが組み込まれていることがわかります。私がしたいのは、ソースアプリとしてQuartz Job Schedulerを使用することです。これは、アプリケーションからの動的ジョブスケジュールを可能にするためです。これを達成するための良いサンプルがありますか?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ビーン名は、パターン:[configurationComponentName].[methodName].[decapitalizedAnnotationClassShortName]で生成されます。たとえば、上記のconsoleSource()定義のエンドポイント(SourcePollingChannelAdapter)は、myFlowConfiguration.consoleSource.inboundChannelAdapterのようなBean名を取得します。

詳細については、Reference Manualを参照してください。

+0

ありがとうございました。これは機能します。 –

関連する問題