RocketMQ入門教程

目錄

下載

安裝/啓動

  windows

  Ubuntu

 ​

代碼案例

源代碼下載


下載

    RocketMQ是由阿里巴巴在2010年開源的分佈式消息中間件,目前已經捐給Apache基金會了。

    由此我們需要去Apache官網下載這裏提供Apache RocketMQ官方文檔

    我們直接下載二進制版本就行RocketMQ-4.4.0我們這裏採用官網案例版本。(官方鏈接直接點擊下載即可!)

   解壓打開後

 

安裝/啓動

  安裝方式提供兩種  windows   Ubuntu

  windows

        前提 需要配置好java環境變量

       

剛剛解壓的文件放在一個你喜歡的位置

我們去配置系統環境變量

   啓動

啓動mqnamesrv.cmd

cmd命令框執行進入至‘MQ文件夾\bin’下,然後執行start mqnamesrv.cmd,啓動NAMESERVER。成功後會彈出提示框,此框勿關閉。說明mqnamesrv啓動成功了!

在繼續啓動mqbroker.cmd   

然後執行start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true啓動BROKER。成功後會彈出提示框,此框勿關閉。   boot success 說明啓動成功了!

窗口都不要關了!   去寫代碼     看代碼案例!

 

  Ubuntu

        前提  需要配置好java環境變量

     一樣的把解壓的文件夾放在Ubuntu系統的某個文件夾中

  配置環境變量

vim /etc/profile

保存後

執行 source /etc/profile   讓環境變量立即生效

 

使用nohup 命令會提示 nohup: 忽略輸入並把輸出追加到'nohup.out'   忽略它 直接回車

Start Name Server

  > nohup sh bin/mqnamesrv &
  > tail -f ~/logs/rocketmqlogs/namesrv.log
 出現 The Name Server boot success...

說明成功了

 

Start Broker

  > nohup sh bin/mqbroker -n localhost:9876 &
  > tail -f ~/logs/rocketmqlogs/broker.log 
  出現The broker[%s, 172.30.30.233:10911] boot success... 

說明成功了!

 

OK  都啓動成功了!   直接看代碼案例

 

關閉命令

> sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK

> sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK

代碼案例

創建一個項目  

引入關鍵依賴

 <dependency>
     <groupId>org.apache.rocketmq</groupId>
     <artifactId>rocketmq-client</artifactId>
     <version>4.5.1</version>
</dependency>

編寫Producer 生產者

public class Producer {

    public static void main(String[] args) throws MQClientException {
        //使用生產者組名稱進行實例化。
        DefaultMQProducer producer = new DefaultMQProducer("rmq-group");
        // 指定名稱服務器地址。
        producer.setNamesrvAddr("172.16.157.128:9876");
        // 指定實例名稱。
        producer.setInstanceName("producer");
        //啓動實例
        producer.start();
        try {
            for (int i = 0; i < 10; i++) {
                Thread.sleep(1000);  //每秒發送一次MQ
                //創建消息實例,指定主題,標記和消息正文。
                Message msg = new Message("TopicA-test",// topic
                        "TagA",// tag
                        (new Date() + "Hello RocketMQ ,QuickStart" + i)
                                .getBytes()// body
                );
                //呼叫發送消息以向其中一個經紀人發送消息。
                SendResult sendResult = producer.send(msg);

                System.out.println(sendResult);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        //生產者實例不再使用後關閉。
        producer.shutdown();
    }

}

接着編寫我們的Consumer消費者

public class Consumer {
    public static void main(String[] args) throws MQClientException {
        // 使用指定的使用者組名稱進行實例化
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("rmq-group");
        // 指定名稱服務器地址。
        consumer.setNamesrvAddr("172.16.157.128:9876");
        // 訂閱一個要消費實例名稱。
        consumer.setInstanceName("consumer");
        // 訂閱一個要消費的主題。
        consumer.subscribe("TopicA-test", "TagA");
        //註冊回調以在從代理獲取的消息到達時執行。
        consumer.registerMessageListener(new MessageListenerConcurrently() {
            @Override
            public ConsumeConcurrentlyStatus consumeMessage(
                    List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
                for (MessageExt msg : msgs) {
                    System.out.println(new String(msg.getBody()));
                }
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });
        //啓動消費者實例。
        consumer.start();

        System.out.println("Consumer Started.");
    }
}

這個ip地址改爲你自己的哦!

我們先啓動Consumer消費者

此時是沒有東西可以消費的!

我們在啓動Producer生產者

 Producer每隔1秒發送消息  切換到Consumer控制檯  發現 有一條消息進來  就消費一條消息

源代碼下載

源代碼已上傳github

https://github.com/rrym/MqDemo.git

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章