2016-09-28 11 views
1

誰かが私の次の問題のアイデアを持っている可能性があります。Spring Cloud AWS SQSでメッセージハンドラをプログラムで設定する方法は?

私は現在、Spring Cloud統合でAWS SQSを使用するプロジェクトに参加しています。受信者のために、私はAPIを提供したいと考えています。ここで、ユーザーはインターフェイスであり、ユーザーのビジネスロジックを含むキューに「メッセージハンドラー」を登録できます。

MyAwsSqsReceiver receiver = new MyAwsSqsReceiver(); 
receiver.register("a-queue-name", new MessageHandler(){ 
    @Override 
    public void handle(String message){ 
    //... business logic for the received message 
    } 
}); 

私は例を見つけました。 https://codemason.me/2016/03/12/amazon-aws-sqs-with-spring-cloud/ とドキュメンタリー http://cloud.spring.io/spring-cloud-aws/spring-cloud-aws.html#_sqs_support

しかし、私は、着信メッセージを処理するための機能を「接続」することが見つかった唯一のものを読んでは、方法、例えば上の注釈です@SqsListenerまたは@MessageMapping

これらの注釈は、特定のキュー名に固定されています。だから私は紛失しています。私の提供する "MessageHandler"(私のAPIから)を指定されたキュー名の受信メッセージに動的に "接続"する方法です。 Configで

例がQueueMessageHandlerセットを取得しSimpleMessageListenerContainerは、ですが、このQueueMessageHandlerは私のハンドラを設定したり、そのメソッドをオーバーライドして、QueueMessageHandlerの私自身のサブクラスを提供するために、適切な場所であることを を思えません。

私は既にSpring Amqp統合とRabbitMqでこのようなことをしており、AWS SQSと同様に考えています。

誰もが考えを持っていますか、これを達成する方法はありますか?私は春のJMSは、実際に、例えば、それを行うことができることを、見つけ

THX +さようなら、 Ximon

EDITwww.javacodegeeks.com/2016/02/aws-sqs-spring-jms-integration.html。誰でも知っていますか、JMSプロトコルを使用した場合の結果は良いか悪いですか?

答えて

0

私たちはSpringとSQSを行うときに、spring-cloud-starter-aws-messagingを使用します。

は、それからちょうど

@Component 
public class MyListener { 

@SQSListener(value="myqueue") 
public void listen(MyMessageType message) { 
//process the message 
} 
} 
+0

こんにちは、答えるためTHXリスナークラスを作成します。残念ながら、これは私が意図したものではありません。私のユースケースでは、私はキューの名前を知らない。それは動的に作成される。 API "createQueue(String name)"呼び出しによって呼び出されます。その後、私はリスナーを動的に設定したいと思います。 – Ximon

+0

オハイオ州大丈夫、その質問から私には分かりませんでした。私はあなたに非常に小さなコードでそれを行うための非常にSpringyの方法を提供しようとしていました。私はSpringがAWSライブラリをラップする方法が気に入っていますが、私たちのユースケースではすべてのキューが事前定義されているので、キュー名にSPELを挿入するだけです。 このアプローチは、あなたがアプリを立ち上げたときにSpringがそのコンポーネントを立ち上げようとしたときにキュー名を知らない(あなたがenv変数を設定してSPELを使ってアクセスしてもそれ)。 – haskovec

関連する問題