今日では、コンテンツは、メッセージキューです。三個の兄トークメッセージキューPegion、カフカとRabbitMQのです。同社の独自の研究開発コンポーネントですPegion。今日、SpringBootにおける主要な統合のRabbitMQは、メッセージはメッセージキューとプロセスの消費に保存されています。
メッセージブローカとAMQP紹介
メッセージ・ブローカは、主にこれらのシナリオの次の設計目標に適用されるメッセージングアーキテクチャスキーマ検証、伝送、ルーティング、です。
- 1つの以上の宛先へのルートのメッセージを
- 他の症状へのメッセージ
- 分解は、メッセージをメッセージ集約を実行し、その宛先に結果を送信した後、再度組み立てたメッセージは、対応するユーザに返されます
- データを取得するために、Webサービスを呼び出します
- イベントやエラーへの対応
- メッセージやテーマのコンテンツベースのルーティングを提供するためにサブスクライブ・モデル - パブリッシュを使用しました
高度なメッセージキュープロトコルAMQPは、メッセージ指向ミドルウェアのオープン標準のアプリケーション層のプロトコルである、短いです。AMQPは、これらの機能を定義します。
- メッセージの方向
- メッセージキュー
- (: - サブスクライブ・モデルをポイントして公開するためのポイントを含む)のメッセージルーティング
- 確実
- セキュリティ
RabbitMQの
RabbitMQのこの記事では、それはほとんどすべての主要な企業の技術プラットフォームをカバーする複数のオペレーティングシステム、複数のプログラミング言語をサポートすることができます1つのミドルウェア製品AMQPプロトコルに導入することです。
SpringBoot統合
以下では、アプリケーションを統合することにより、SpringBootでのRabbitMQと、単純な伝達、理解するために、受信したメッセージで直感的な感じのRabbitMQの例を達成するために。
:SpringBootでは、我々はAMQPモジュールは非常に良いサポートRabbitMQの可能スターターのPOMを、導入している前に、ここでは詳細に統合プロセスを説明するために来るのでRabbitMQのは、行うには非常に簡単なことである統合
- 「RabbitMQの-こんにちは」:という名前の新しいプロジェクトを作成しますSpringBoot。
- pom.xmlのコンテンツ依存、前記ばねブートスタータAMQPサポートのRabbitMQとして組み込みます。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
复制代码
- application.propertiesにRabbitMQのおよそ接続し、ユーザー情報を設定し、ユーザーは、ユーザー管理ページを作成し、上記のインストールに戻ることができます。
spring.application.name=rabbitmq-hello
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=spring
spring.rabbitmq.password=123456
复制代码
- メッセージプロデューサの送信者を作成します。注射のメッセージインタフェースAmqpTemplate例を送信することによって達成され、AmqpTemplateインタフェースはAMQPプロトコルの基本動作を定義します。SpringBoot噴射にその構成に応じて実施されるであろう。このプロデューサーで、我々はと呼ばれるハローにキューに送信された文字列を生成しました。
@Component
public class Sender {
@Autowired
private AmqpTemplate rabbitTemplate;
public void send() {
String context = "hello " + new Date();
System.out.println("Sender : " + context);
this.rabbitTemplate.convertAndSend("hello", context);
}
}
复制代码
- メッセージコンシューマ用レシーバーを作成します。そのような注釈の定義を聞くことによって@RabbitListenerハローキューおよび注釈メッセージ処理方法の@RabbitHandlerで指定。だから、消費者は、消費ハローキュー、出力メッセージの文字列の内容に消費者を実現しています。
@Component
@RabbitListener(queues = "hello")
public class Receiver {
@RabbitHandler
public void process(String hello) {
System.out.println("Receiver : " + hello);
}
}
复制代码
- RabbitConfig RabbitMQのコンフィギュレーション・クラスを作成し、高レベルの情報は、キュー、スイッチ、ルーティングを設定します。ここでは、まず、基本的な生産と消費のプロセスを完了するために、最小限にするために構成を定義、ベースエントリです。
@Configuration
public class RabbitConfig {
@Bean
public Queue helloQueue() {
return new Queue("hello");
}
}
复制代码
- メインクラスを作成します。
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
复制代码
- ニュース制作を呼び出すために使用されるユニットテストクラスを作成します。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = HelloApplication.class)
public class HelloApplicationTests {
@Autowired
private Sender sender;
@Test
public void hello() throws Exception {
sender.send();
}
}
复制代码
プログラミングが完了した後、あなたが実行しようとして始めることができます。まずRabbitMQのサーバーが起動していることを確認し、その後、次の操作:
-
私たちはこのような何かを参照してください、コンソールから、アプリケーションのメインクラスを起動し、プログラムは127.0.0.1:5672をspringcloud訪問の接続を作成します。
o.s.a.r.c.CachingConnectionFactory : Created new connection: SimpleConnection@29836d32 [delegate=amqp://[email protected]:5672/]
同時に、我々は、コントロールパネルからのRabbitMQ、あなたが接続し、チャンネルが現在の接続のためのエントリが含まれて見ることができます。 -
ユニットテストクラスを実行して、我々は次のコンソール出力内容を見ることができ、helloメッセージは、キューのRabbitMQサーバーに送信されます。
Sender : hello Sun Sep 25 11:06:11 CST 2016
-
コンソールアプリケーションのメインクラスに切り替えて、私たちは、キューを実行するには、次の出力、消費者こんにちはリスナーのようなものを見て、受信したメッセージ情報を出力することができます。
Receiver : hello Sun Sep 25 11:06:11 CST 2016
私たちは完了です。