linuxインストール導入RocketMqコンソール付き


今日はアリの牛迫情報ミドルウェアRocketMqを勉強して、公式サイトに従ってインストールして実践して、いくつかの穴にも遭遇しましたが、最後に解決しました.今まとめます.
公式サイトのアドレス:http://rocketmq.apache.org/
ダウンロードしたのは現在の最新バージョン:4.4.0 rocketmq-all-4.4.0-source-release.zip
まず解凍し、unzip unzip rocketmq-all-4.4をコマンドする.0-source-release.zip
そしてrocketmq-all-4.4に入ります.0ディレクトリでコンパイルし、maven mvn-Please-all-DeskipTests clean install-Uを使用してapache-rocketmqディレクトリにアクセス
cd distribution/target/apache-rocketmq
バックグラウンド起動によるName Server nohup sh bin/mqnamesrvの起動&
起動成功linux安装部署RocketMq带控制台_第1张图片 Broker nohup sh bin/mqbroker-n localhost:9876&linux安装部署RocketMq带控制台_第2张图片起動Ok
次に、メッセージを送信および受信できます.送信クラス:
package com.demo.service.business;

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.common.RemotingHelper;

/**
 * @author huangdi
 * @Description: TODO
 * @date 2019/2/25 11:46
 */
public class SyncProducer {
    public static void main(String[] args) throws Exception {
        //Instantiate with a producer group name.
        DefaultMQProducer producer = new
                DefaultMQProducer("TEST_PRODUCER_GROUP");
        // Specify name server addresses.
        producer.setNamesrvAddr("192.168.x.xx:9876");
        //Launch the instance.
        producer.start();
        for (int i = 0; i < 1; i++) {
            //Create a message instance, specifying topic, tag and message body.
            Message msg = new Message("CONSUMER-CONTACT-TOPIC" ,
                    null ,
                    ("Hello RocketMQ ").getBytes(RemotingHelper.DEFAULT_CHARSET)
            );
            //Call send message to deliver message to one of brokers.
            SendResult sendResult = producer.send(msg);
            System.out.printf("%s%n", sendResult);
        }
        //Shut down once the producer instance is not longer in use.
        producer.shutdown();
    }
}

消費者:
package com.demo.service.business;

import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.common.message.MessageExt;

import java.util.List;

/**
 * @author huangdi
 * @Description: TODO
 * @date 2019/2/25 12:56
 */
public class Consume {

    public static void main(String[] args) throws InterruptedException, MQClientException {

        // Instantiate with specified consumer group name.
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("rename_unique_group_name");

        // Specify name server addresses.
        consumer.setNamesrvAddr("192.168.x.xx:9876");

        // Subscribe one more more topics to consume.
        consumer.subscribe("CONSUMER-CONTACT-TOPIC", "*");
        // Register callback to execute on arrival of messages fetched from brokers.
        consumer.registerMessageListener(new MessageListenerConcurrently() {

            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List msgs,
                                                            ConsumeConcurrentlyContext context) {
                System.out.printf("%s Receive New Messages: %s %n", Thread.currentThread().getName(), msgs);
                for (Message msg : msgs) {
                    String jsonStr = new String(msg.getBody());
                    System.out.println("receive is " + jsonStr);
                }
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });

        //Launch the consumer instance.
        consumer.start();

        System.out.printf("Consumer Started.%n");
    }
}

そんなに簡単だと思っていたのに、やはり間違えてしまった.1つ目の間違い:linux安装部署RocketMq带控制台_第3张图片は意外にも自動的にTOPICを作成しないで、ネット上では開いていないためです:autoCreateTopicEnable=true、起動コマンドを通じてこのパラメータに参加することができて、私はここで試していません.成功するかもしれない.私のやり方はコンソールに直接このTOICを追加することです.
RocketMqコンソールの構成も簡単です.jarパッケージです.起動すればいいです.手順は次のとおりです.https://github.com/apache/rocketmq-externalsgithubからダウンロード
コンソールプロジェクトのフォルダの下にあるrocketmq-consoleに入ると、コンソールの構成を変更できます.ここでは管理バックグラウンドアクセスコンテキストパスを変更しました.デフォルトは空$vi src/main/resources/applicationです.properties#はバックグラウンドアクセスコンテキストパスを管理し、デフォルトは空です.記入する場合は、必ず前に「/」を付け、後ろに付けないでください.そうしないと、エラーサーバを起動します.contextPath=/rocketmq#アクセスポートserver.port=80
プロジェクトをjarパッケージにし、jarファイルを実行します.
$ mvn clean package -Dmaven.test.skip=true
$ java -jar target/rocketmq-console-ng-1.0.0.jar --rocketmq.config.namesrvAddr=‘192.168.x.xx:9876’
起動に成功したら、アドレスにアクセスhttp://192.168.x.xx/rocketmqを選択すると、管理バックグラウンド操作にアクセスできます.
linux安装部署RocketMq带控制台_第4张图片 CONSUMER-CONTART-TOPICを追加して運転します.今回は大丈夫でしょう.私は行きます.、また間違えました.今回は他の間違いです.
linux安装部署RocketMq带控制台_第5张图片そこでネット上の资料を调べて、ファイアウォールの问题のためだと言って、多くの方法を试みても始まらない.のどうして安照公式サイトに問題があるのかと思っていますが、私はどこが漏れているのでしょうか.よく探しても区别が见つからないので、本当に理解できません....
皇天は心を持たないで、最后にやはり私に资料を见つけさせて、やはりネット上の大神の提供に頼って、彼はこのように书いたのです:公式サイトのこのスタート命令の特别な穴、スタートする时brokerは私有ipを通じてスタートして、クライアントが远隔的に接続することができなくて、だからスタートする前に私达はプロファイルを修正する必要があります.そこで私は彼の紹介に従って直しました.主にbrokerを直しました.confファイルlinux安装部署RocketMq带控制台_第6张图片 nameserverこのマシンのIPを修正し、brokerはホストIP
再起動コマンド:nohup sh bin/mqbroker-n localhost:9876 autoCreateTopicEnable=true-c conf/broker.conf &
上のブロカーconfがその場所を見つけるには、現在のconfディレクトリの下にあります.linux安装部署RocketMq带控制台_第7张图片
今回の起動で具体的なIPを見ることができ、再びメッセージを送信します.在这里插入图片描述は正常に送信され、消費されました.
在这里插入图片描述