0

私は、「Hello、world」のSpring Cloud Data Flowストリームを、以下で説明する非常に簡単な例に基づいて実行しようとしています。 http://cloud.spring.io/spring-cloud-dataflow/。シンプルなソースを作成してシンクし、Kafkaを使用してローカルのSCDFサーバー上で実行することができるので、ここまではSCDFで指定されたトピックですべてのメッセージが生成され消費されます。Kubernetes/Spring Cloudデータフローstream> spring.cloud.stream.bindings.output.destinationはプロデューサによって無視されます

今、プライベートクラウドにhttp://docs.spring.io/spring-cloud-dataflow-server-kubernetes/docs/current-SNAPSHOT/reference/htmlsingle/#_getting_startedに記載されている手順に基づいて展開しようとしています。このデプロイメントを使用すると、問題のない簡単な "time | log"ストリームを展開できますが、ポッドの作成時に指定されたトピックにプロデューサーが書き込みを行っていないので、私の例は失敗します(例えば、spring.cloud.stream.bindings.output.destination = ntest33.nites-source9)トピック "output"にあります。トピック "input"にメッセージを作成し、期待するシンクコンポーネントにも同様の問題があります。ソースの

nsource1 | log 

とコンテナ引数は次のとおりです:

は、私はダッシュボードの使用ストリーム定義を作成したソース・コンポーネントの

--spring.cloud.stream.bindings.output.producer.requiredGroups=ntest34 
--spring.cloud.stream.bindings.output.destination=ntest34.nsource1 

コードスニペットは パッケージXXXXです。

import java.text.SimpleDateFormat; 
import java.util.Date; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.cloud.stream.annotation.EnableBinding; 
import org.springframework.cloud.stream.messaging.Source; 
import org.springframework.context.annotation.Bean; 
import org.springframework.integration.annotation.InboundChannelAdapter; 
import org.springframework.integration.core.MessageSource; 
import org.springframework.messaging.support.GenericMessage; 

@SpringBootApplication 
@EnableBinding(Source.class) 
public class HelloNitesApplication 
{ 
public static void main(String[] args) 
{ 
    SpringApplication.run(HelloNitesApplication.class, args); 
} 

@Bean 
@InboundChannelAdapter(value = Source.OUTPUT) 
public MessageSource<String> timerMessageSource() 
{ 
    return() -> new GenericMessage<>("Hello " + new SimpleDateFormat().format(new Date())); 
} 

とログに私が見ることができる

はっきり

2017-04-07T09:44:34.596842965Z 2017年4月7日09:44:34593 INFOメインosicDirectChannel:81 - チャンネル " application.output 'には1人の加入者がいます。

問題は、メッセージを生成/消費する必要があるトピック、またはk8でこの作業を行うために使用する属性と値を適切に上書きする方法です。

UPDATE:56:40.435405177Z 2017年4月7日12:56:40.435 INFO 7 --- [メイン] osintegration IがRabbitMQの

2017-04-07T12を使用して同様の問題があります。 channel.DirectChannel:チャンネル 'application.output'には1人の加入者があります。

答えて

2

私のドッカーの画像で問題が発生しました。私はまだ詳細を知らないが、https://spring.io/guides/gs/spring-boot-docker/で示されたDockerfileを使用すると、dockerコンテナで2つのプロセスをインスタンス化した.1つはパラメータで、もう1つは稼働時間のないものであり、したがって使用されていた。

ソリューションは

ENTRYPOINT [ "java", "-jar", "/app.jar" ] 

ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ] 

を交換することであり、それは仕事を始めました。この例が最初のエントリポイントを示した理由と、2つのプロセスが作成された理由は正当な理由があるに違いありません。

0

設定プロパティの設定方法の詳細はありますか?その機能はかなり基本的なので、これはうまくいくはずです。ストリーム定義を使用して設定する場合は、質問をストリーム定義で更新してください。

チャネル名は、アプリケーションが内部的に使用するものなので、「出力」のままです。

+0

答えていただきありがとうございます。ストリーム定義を追加しました。 –

+0

SCDFによってポッドで渡された引数が、イメージ定義の間違いのためにサービスで使用されない可能性がありますか?私は画像を作成するためにhttps://spring.io/guides/gs/spring-boot-docker/をたどりましたが、アプリの起動方法のソースコードがどのようになったのかわかりませんでした。 –

関連する問題