概要
実際の生産では、我々はメッセージをパブリッシュおよびサブスクライブする必要があり、複数のトピックかもしれので、あなたが助けにバインドカスタムマルチトピックを使用する必要があり、我々は実現の機能をパブリッシュおよびサブスクライブ
プロデューサー
カスタム出力インターフェース、次のように:
パブリックインターフェースMYSOURCE {
@output( "OUTPUT1")
MessageChannel OUTPUT1()。
@Output("output2")
MessageChannel output2();
}
次のようにケースコード解放メッセージです。
@Autowired
プライベートMYSOURCE源と、
公共ボイド送信(文字列MSG)はスロー例外{
source.output1()送信(MessageBuilder.withPayload(MSG).build())。
}
消費者
入力カスタムインタフェース、次のように:
パブリックインターフェースMySink {
@Input( "INPUT1")
SubscribableChannel INPUT1()。
@Input("input2")
SubscribableChannel input2();
@Input("input3")
SubscribableChannel input3();
@Input("input4")
SubscribableChannel input4();
}
メッセージを受信するためのケースのコードは次の通りであります:
@StreamListener( "INPUT1")
公共ボイドreceiveInput1(文字列receiveMsg){
するSystem.out.println( "INPUT1受信:" + receiveMsg)。
}
応用
入力と出力の構成情報を結合し、以下のように、注釈を@EnableBindingを有効にします:
@SpringBootApplication
@EnableBinding({MySource.class、MySink.class})
パブリッククラスRocketMQApplication {
パブリック静的無効メイン(文字列[] args){
SpringApplication.run(RocketMQApplication.class、引数)。
}
}
application.yml
プロデューサー
スプリング:
アプリケーション:
名前:rocketmqプロバイダー
クラウド:
ストリーム:
rocketmq:
バインダー:
namesrv-ADDR:192.168.10.149:9876
バインディング:
OUTPUT1:{宛先:テストtopic1、コンテンツタイプ:アプリケーション/ JSON}
OUTPUT2:{先:テストtopic2、コンテンツタイプ:アプリケーション/ JSON}
消費者
スプリング:
アプリケーション:
名前:rocketmqコンシューマ
クラウド:
ストリーム:
rocketmq:
バインダー:
namesrv-ADDR:192.168.10.149:9876
バインディング:
入力:{consumer.orderly:真}
バインディング:
INPUT1:{宛先:テストtopic1、のContentタイプ:text / plainで、基:試験群、consumer.maxAttempts:1}
INPUT2:{宛先:テストtopic1、コンテンツタイプ:text / plainで、基:試験群、consumer.maxAttempts:1}
INPUT3:{宛先:テストtopic2、コンテンツタイプ:text / plainで、基:試験群、consumer.maxAttempts:1}
INPUT4:{宛先:テストtopic2、コンテンツタイプ:text / plainで、基:試験群、消費者.maxAttempts:1