ホームページ >Java >&#&チュートリアル >Spring と AMQP を使用して Java でメッセージを送受信する (パート 2)

Spring と AMQP を使用して Java でメッセージを送受信する (パート 2)

怪我咯
怪我咯オリジナル
2017-06-25 10:02:272134ブラウズ

前の記事では RabbitMQ を使用したメッセージの送信について説明しましたが、この記事ではメッセージの受信について説明します。
従来の JMS では、キューから情報を取得するには 2 つの方法があります。JmsTemplate を使用する同期方法と、メッセージ駆動型の Pojo を使用する非同期方法です。 Spring AMQP は、AMQP 経由で送信されたメッセージを取得する同様の方法も提供します。

RabbitTemplate を使用してメッセージを受信します

RabbitTemplate によって提供される情報を受信する最も簡単な方法は、receive() メソッドです。これにより、キューから Message オブジェクトを取得できます:

Message message = rabbit.receive("spittle.test.queue");

または、設定を通じて取得することもできますデフォルトのメッセージキューは、テンプレートの設定時にキュー属性を設定することで実現されます:

<template id="rabbitTemplate" 
    connection-factory="connectionFactory"exchange="spittle.test.exchange" 
    routing-key="spittle.test" 
    queue="spittle.test.queue" />

この場合、receive() メソッドを呼び出すと、パラメータを設定せずにデフォルトのキューからメッセージを取得できます:

Message message = rabbit.receive( );

Message オブジェクトを取得した後、通常、その body 属性のバイト配列を目的のオブジェクトに変換する必要があります。送信時にドメイン オブジェクトを Message に変換するのと同じように、受信した Message を変換します。ドメイン オブジェクトの作成も面倒です。ここで、代わりに RabbitTemplate の acceptAndConvert() メソッドを使用することを検討できます:

Spittle spittle = (Spittle) rabbit.receiveAndConvert("spittle.test.queue");

acceptAndConvert() メソッドは、sendAndConvert() メソッドと同じメッセージ コンバーターを使用して、Message オブジェクトを元の型に変換します。
receive() メソッドと acceptAndConvert() メソッドを呼び出すと、キュー内に待機中のメッセージがない場合はすぐに戻り、null が返されます。現時点では、プログラマは通常、キュー監視を実装するためにポーリングと必要なスレッドを自分で管理する必要があります。メッセージの到着を待つたびに同期的にポーリングしたくない場合は、Spring AMQP が提供するメッセージ駆動型の Pojo を使用してメッセージを受信する方法を見てみましょう。

メッセージ駆動型の pojo を使用してメッセージを受信する

メッセージ駆動型の pojo で Spittle オブジェクトを非同期的に使用したい場合は、まず次の SpittleTestHandler がこの役割を果たします。 , このクラスは AMQP に依存せず、どのようなメカニズムが渡されるかに関係なく、Spittle オブジェクトを処理できます。

ここで、Spring アプリケーション コンテキストで SpittleTestHandler を Bean として宣言する必要もあります:
public class SpittleTestHandler {public void handleSpittleTest (Spittle spittle) {
        ...
    }
}


最後に、メッセージが到着すると、SpittleTestHandler を呼び出すことができます:

<bean id="spittleListener"class="com.***.spittr.test.SpittleTestHandler">

上記の 要素と 要素は両方とも Rabbit 名前空間から取得されます。また、監視対象のキューを queue-name 属性で指定します。複数のキューを設定する場合は、カンマで区切って指定します。この時点でメッセージの受信は完了です。メッセージを取得した後、対応するメソッドで対応する処理を実行できます。

以上がSpring と AMQP を使用して Java でメッセージを送受信する (パート 2)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。