WindowsでのプロデューサーとコンシューマーのRabbitMQダウンロード、構成、およびJava実装の例

RabbitMQは、複数のメッセージ通信プロトコルをサポートし、分散展開をサポートし、複数のオペレーティングシステムでの実行をサポートし、柔軟性や高可用性などの機能を備えた軽量のメッセージブローカーミドルウェアです。RabbitMQはさまざまなプロトコルをサポートしますが、その中で最も重要なものは、「メッセージクライアント」と「メッセージブローカーミドルウェア」間の通信プロトコルを定義するAdvanced Message Queuing Protocol(AMQP)です。このプロトコルに基づいて、メッセージクライアントとメッセージブローカーミドルウェアは次のことができます。開発言語や特定の製品の制約から解放されます。

AMQPの大まかなモデルを次の図に示します。

  

プロデューサーはメッセージを「メッセージブローカー(RabbitMQサーバー)」に渡し、メッセージチャネル(チャネル)がそれらの間に確立され、メッセージは最初にエクスチェンジ(Exchange)によって処理され、次にメッセージキュー(メッセージキュー)に配信されます。 )、そして最後にメッセージキューはメッセージをメッセージ担当者に送信します。

1.RabbitMQとErlangをダウンロードします

WindowsでのRabbitMQサーバーの最高バージョンは3.8.1です。ダウンロードリンク:https://www.rabbitmq.com/install-windows.html

RabbitMQサーバーはErlang言語を使用しているため、Erlangもダウンロードする必要があります。現在の最高バージョンは22.1、
ダウンロードアドレス:http://erlang.org/download/、ファイル名otp_win64_22.1.exeをクリックしてダウンロードします。

二、配置

1. RabbitMQは、インストール後にWindowsサービスとして開始されます。

2.プラグイン管理を開きます

インストールディレクトリのsbinディレクトリにcmdを入力し、次のコマンドを入力してインストールします
。rabbitmq-pluginsenablerabbitmq_management

プラグインのステータスを表示するには、次のコマンドを入力します
。rabbitmq-pluginslist

3.Web管理インターフェイスにログインします

ステップ2プラグインを開いた後、次のアドレスにアクセスできます。http:// localhost:15672 /
ログインするデフォルトのユーザ名とパスワード(どちらもゲスト)を入力します。ログイン後のインターフェイスは次のとおりです。

注:RabbitMQの別のポート5672は、クライアント通信に使用されます。

3 、プロデューサーとコンシューマーの例のJava実装

サーバーの場合、メッセージプロデューサーとコンシューマーの両方がクライアントに属し、AMQPプロトコルを介してサーバーと通信します。AMQPは言語による制限がなく、クライアントはさまざまなプログラミング言語で実装できます。クライアントは以下のJavaで書かれています。

新しいMavenプロジェクトを作成し、pom.xmlに依存関係を追加します。

        <dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <version>5.7.3</version>
        </dependency>

1.プロデューサーを書く

新しいメッセージプロデューサーを作成し、サーバーにメッセージを送信します。

package com.example.rabbittest;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Send {
    public static void main(String[] args) throws IOException, TimeoutException {
        //创建连接
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        Connection connection = factory.newConnection();
        //建立通道
        Channel channel = connection.createChannel();
        //声明队列
        String queueName = "hello";
        channel.queueDeclare(queueName,false,false,false,null);
        String message = "hello world";
        //消息发布
        channel.basicPublish("", queueName, null, message.getBytes());
        //关闭通道和连接
        channel.close();
        connection.close();
    }
}

上記のコードはスイッチを宣言しておらず、デフォルトのスイッチが使用されます。

コードを実行した後、http:// localhost:15672 /にログインし、[キュー]タブをクリックすると、helloキューが作成されていることがわかります。

2.消費者を書く

(プロデューサーと同じプロジェクトで)新しいメッセージコンシューマーを作成し、サーバーメッセージを受け入れます。

package com.example.rabbittest;

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Receive {
    public static void main(String[] args) throws IOException, TimeoutException {
        //创建连接
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        Connection connection = factory.newConnection();
        //建立通道
        Channel channel = connection.createChannel();
        //声明队列
        String queueName = "hello";
        channel.queueDeclare(queueName,false,false,false,null);
        String message = "hello world";
        //消息发布
        Consumer consumer = new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                String message = new String(body, "UTF-8");
                System.out.println("接收的消息:" + message);
            }
        };
        channel.basicConsume(queueName, true, consumer);
    }
}

コードを実行した後、RabbitMQコンソールを開き、helloキューをクリックすると、対応するコンシューマーがあることがわかります。

 

おすすめ

転載: blog.csdn.net/gdjlc/article/details/115008489