2017-06-15 7 views
0

メッセージはメソッドの戻り値から生成されたときにデフォルトにMessage<T>ヘッダを設定する方法があります:上記の例で春クラウドストリームのデフォルトのカスタムメッセージヘッダ

@Publisher(channel = "theChannelname") 
public MyObject someMethod(Object param) { 
    ... 
    return myObject; 
} 

または

@SendTo("theChannelname") 
public MyObject someMethod(Object param) { 
    ... 
    return myObject; 
} 

は、 Message<MyObject>が自動的に生成されます。

どのようにしてデフォルトのメッセージ生成を制御できますか?

答えて

1

あなたは、メソッドの引数のための@Header注釈を経由していることを行うことができます受け入れて、それは作業溶液が含まれているため

@Publisher(channel="testChannel") 
public String defaultPayload(String fname, @Header("last") String lname) { 
    return fname + " " + lname; 
} 

http://docs.spring.io/spring-integration/reference/html/message-publishing.html#publisher-annotation

+0

私は答えをマーク。しかし、私はインフラストラクチャの操作で自分のインタフェースに影響を与えたくないと思っています... または何か不足していますか? – Savash

+0

「インフラストラクチャ操作」はありません。それはまさに '@ Publisher'の仕組みです:http://docs.spring.io/spring-integration/reference/html/message-publishing.html#publisher-annotation。実際には、ヘッダーの転送要件を達成するためにメソッド全体から 'Message'を返すだけでよいでしょう。 –

+0

私はインターフェイスメソッドを持っています: '' 'Result createRecord(Object data)' ''そして、実装では、結果をカフカのトピックに送っていきたいと思います。私はインターフェイスを変更できないとしましょう...私はそれを行うコードを書いたくありません:) ie '' 'channel.send(メッセージメッセージ)' '' – Savash

1

実際には、ペイロードを返すとヘッダーはあまり気にしません。このメソッドにはMessageが返され、独自のヘッダーが追加されます。

関連する問題