2017-05-30 5 views
2

Spring Cloud Streamに問題があります。それは、私が作成した(@PostConstructで注釈を付けた)メソッドが作成されるとすぐにKafkaに書き込むBeanがあるため、適切なMessageChannelをautowireし、application.ymlで宛先とバインダーのプロパティを設定します。それはこのように書きます:@PostConstructとMessageChannelの自動配線

@Component 
@RequiredArgsConstructor 
public class Sender 
{ 
    private final MessageChannel output; 

    @PostConstruct 
    public void start() 
    { 
     output.send(new GenericMessage("Hello world"); 
    } 
} 

そして、私はまた、次の依存関係持っapplication.yml

spring: 
    cloud: 
     stream: 
      bindings: 
       output: 
       destination: someData 
       binder: kafka 

- spring-cloud-stream-reactive 
- reactor-core 
- spring-cloud-starter-stream-kafka 

プロジェクト自体が開始されますが、私は次のように取得していますがoutputstart()メソッドで書き込もうとしたときの例外:

Caused by: org.springframework.integration.MessageDispatchingException: Dispatcher has no subscribers 

カフカバインダーがチャンネルをバインドできなかったのは何ですか?もしそうなら、これに代わる方法は何でしょうか。

ありがとうございます。

答えて

3

@PostConstructからはできません。まだ早い。他のコンポーネントはまだ初期化されているかもしれません。

送信ロジックをSmartLifecycle.start()の実装に移動する必要があります。

+0

これは私が考えていたものです。 SmartLifecycle.start()を試してみましょう。ありがとう! – wookie

+0

完璧に働いた、もう一度ありがとう! – wookie

関連する問題