私は、所定の宛先に複数の種類のインスタンスを書くことができます例えば:私はその後、別のメッセージペイロードを受信するための複数の@JmsListener
注釈付きの方法を提供することができるだろうと思って同じ宛先に対して複数のペイロードタイプを持つ@JmsListenerを使用していますか?
JmsTemplate template = ...
Alpha alpha = new Alpha(...);
Beta beta = new Beta(...);
template.convertAndSend("my-destination", alpha);
template.convertAndSend("my-destination", beta);
- そのような:
を@JmsListener(destination = "my-destination")
public void receiveAlpha(Alpha alpha) { ... }
@JmsListener(destination = "my-destination")
public void receiveBeta(Beta beta) { ... }
しかし、これを試してみると、Beta
の値をあるメソッドに送信し、Alpha
の値を別のものに送信することを区別できないため、例外が発生します。PayloadArgumentResolver.resolveArgument
これはどのように処理する必要がありますか?私はメッセージプロパティとしてペイロードタイプを符号化するとして、私は物事がそうのように動作させるために、セレクタを指定することができます。
@JmsListener(destination = "my-destination", selector = "_type = 'Alpha'")
public void receiveAlpha(Alpha alpha) { ... }
@JmsListener(destination = "my-destination", selector = "_type = 'Beta'")
public void receiveBeta(Beta beta) { ... }
しかし、春は舞台裏賢さのすべての種類をやっているように私は私が支援する必要があり驚いてそれは明示的にこれのように。
もっと暗黙的/より良い方法がありますか?