2016-09-17 8 views
0

RabbitMQを使用して簡単なSpring Cloud Streamアプリケーションを構成しようとしています。私が使用するコードは、ほとんどがspring-cloud-stream-samplesから取られています。私は実行するとSpring Cloud Streamでキューが作成されない

fixedDelay: 5000 
spring: 
    cloud: 
    stream: 
     bindings: 
     output: 
      destination: test 

@SpringBootApplication 
public class DemoApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(DemoApplication.class, args); 
    } 
} 

と例から、簡単なメッセージプロデューサー: 私はエントリポイント持ってさらに

@EnableBinding(Source.class) 
public class SourceModuleDefinition { 

    private String format = "yyyy-MM-dd HH:mm:ss"; 

    @Bean 
    @InboundChannelAdapter(value = Source.OUTPUT, poller = @Poller(fixedDelay = "${fixedDelay}", maxMessagesPerPoll = "1")) 
    public MessageSource<String> timerMessageSource() { 
     return() -> new GenericMessage<>(new SimpleDateFormat(this.format).format(new Date())); 
    } 

} 

を、ここにapplication.yml構成ですたとえば、Rabbitに接続し、testという交換を作成します。しかし、私の問題は、それがキューを作成せず、自動的にバインドすることです。私はウサギに行くトラフィックを見ることができますが、私のメッセージはすべて消えてしまいます。私は彼らが消費者によって読まれない限り、いくつかの列に留まる必要がありますが。

私は何かを誤解しているかもしれませんが、私が読んだすべてのトピックから、Spring Cloud Streamはキューとバインディングを自動的に作成する必要があります。そうでない場合は、メッセージを保存するように設定するにはどうすればよいですか?

私はSpring Cloud Brixton.SR5とSpring Boot 1.4.0.RELEASEを使用しています。

答えて

2

コンシューマアプリケーションを起動するとすぐにキューが作成されます。

ラビットMQの場合、各コンシューマグループに対して別々のキューがあり、あらかじめすべてのグループを知ることはできません。あらかじめわかっているコンシューマグループに対してキューを自動的に作成する場合は、​​プロデューサのプロパティ。これにより、そのグループのコンシューマが開始されるまでメッセージが確実に永続化されます。

は、ここに詳細を参照してください:http://docs.spring.io/spring-cloud-stream/docs/Brooklyn.BUILD-SNAPSHOT/reference/htmlsingle/#_producer_properties

+0

はい、それは働きます!ありがとうございました。 – FVlad

関連する問題