自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

10 張圖 | 一文帶你用 Mac M1 跑 RocketMQ

存儲 存儲架構(gòu)
最近在倒騰RocketMQ消息隊列,首先就得把 RocketMQ 跑起來對吧,我們一般都是 Windows 或者 Linux 機器上,按照官方教程一下子就跑起來了,另外用 Intel 芯片的 Mac 也能輕松跑起來。

你好,我是悟空。

本文主要內(nèi)容如下:

圖片

目錄

前言

最近在倒騰RocketMQ消息隊列,首先就得把 RocketMQ 跑起來對吧,我們一般都是 Windows 或者 Linux 機器上,按照官方教程一下子就跑起來了,另外用 Intel 芯片的 Mac 也能輕松跑起來。

但是我在 Mac M1? 上的機器上跑的時候,就遇到了各種問題,折騰了一天,最后終于把 RocketMQ 在 Mac M1 上用Docker跑起來了,這里總結(jié)下心路歷程。

雖然演示環(huán)境是用 Mac M1系統(tǒng),但其實 Linux 系統(tǒng)也適用~

關(guān)于用源碼方式跑 RocketMQ 的方式下文也有介紹。

一、用源碼跑 RocketMQ

最開始我用 Docker 跑,會報錯,后來我就用源碼跑,可以跑起來,能夠發(fā)送和消費消息。

源碼地址:https://github.com/apache/rocketmq

我用的版本是 4.9.2。

二、用 Docker 跑 RocketMQ

總共啟動了三個容器,用到的鏡像分別為

  • nameserver 鏡像:rocketmqinc/rocketmq
  • broker 鏡像:dyrnq/rocketmq:4.8.0
  • 控制臺鏡像:apacherocketmq/rocketmq-dashboard:latest

圖片

三個容器啟動成功

2.1 拉取 rocketmq 鏡像

docker pull rocketmqinc/rocketmq

2.2 啟動 nameserver 命令

鏡像:rocketmqinc/rocketmq

docker run -d -p 9876:9876 -v `pwd`/data/namesrv/logs:/root/logs -v `pwd`/data/namesrv/store:/root/store --name rmqnamesrv  rocketmqinc/rocketmq sh mqnamesrv

2.3 啟動 broker 命令

鏡像:dyrnq/rocketmq:4.8.0

docker run -d -p 10911:10911 -p 10909:10909 -v `pwd`/data/broker/logs:/root/logs -v `pwd`/data/broker/store:/root/store --name rmqbrokerv2 --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" dyrnq/rocketmq:4.8.0 sh mqbroker -c ../conf/broker.conf

進入容器

docker exec -it b6b /bin/bash

圖片

進入到 broker 容器

修改 broker.conf 文件,提示未安裝 vim 工具,則需要安裝下 vim

vim ../conf/broker.conf
apt-get update
apt-get install vim
vim ../conf/broker.conf

然后將 這行命令拷貝到 broker.conf 文件中。192.168.10.197 為自己的本機 IP

brokerIP1=192.168.10.197

不知道自己 IP 的地址的,可以通過這個命令獲取 mac 機器的本機 IP,如下所示:

ifconfig | grep "inet"

最后 broker.conf 配置如下:

圖片

broker.conf 配置

三、啟動控制臺 rocketmq-dashboard

原來的控制臺是 rocketmq-console-ng,但是發(fā)現(xiàn) Github 上已經(jīng)移除了。官方提示如下:

圖片

官方提示移除了 rocketmq-console-ng。

上面公告的表示之前的rocket-console已經(jīng)不在這個倉庫了,已經(jīng)創(chuàng)建了一個獨立的倉庫并命名為RocketMQ Dashboard。倉庫路徑:https://github.com/apache/rocketmq-dashboard。

我們直接執(zhí)行下面的命令:

docker run -d --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=172.16.8.62:9876 -Drocketmq.config.isVIPChannel=false" -p 8080:8080 -t apacherocketmq/rocketmq-dashboard:latest

圖片

啟動 dashboard 容器。

注意:這里的 IP 地址為本機 IP。

isVIPChannel=false,這里必須這樣設(shè)置,不然打開控制臺后,無法獲取數(shù)據(jù)。

容器啟動成功后訪問 http://localhost:8080/。

圖片

四、測試發(fā)送消息

往 test_topic 發(fā)送一條消息

圖片

選擇往哪個隊列發(fā)送消息

在消息主題中輸入 悟空聊架構(gòu),www.passjava.cn,點擊確定按鈕發(fā)送消息。

圖片

發(fā)送的消息內(nèi)容

發(fā)送結(jié)果如下:

圖片

發(fā)送結(jié)果

看下 Message 菜單欄,選擇 test_top 主題,可以看到一條消息:

圖片消息列表

消息內(nèi)容如下,和發(fā)送的消息一致。

圖片

接收到的消息

五、問題匯總

broker 無法連到 NameServer

需要到容器里面修改 broker.conf 文件,加上。

brokerIP1=192.168.10.197。

并且 docker 啟動 broker 時需要增加命令參數(shù)-c ../conf/broker.conf。

原因

這里的 ip 地址需要指定為外網(wǎng)地址。因為 rockerMQ broker 默認會選擇內(nèi)網(wǎng)地址。

只有當參數(shù)行中有-c參數(shù)時才會使用配置文件的參數(shù)。這里卡了很長時間。

源碼如下:

if (commandLine.hasOption('c')) {
String file = commandLine.getOptionValue('c');
if (file != null) {
configFile = file;
InputStream in = new BufferedInputStream(new FileInputStream(file));
properties = new Properties();
properties.load(in);

properties2SystemEnv(properties);
MixAll.properties2Object(properties, brokerConfig);
MixAll.properties2Object(properties, nettyServerConfig);
MixAll.properties2Object(properties, nettyClientConfig);
MixAll.properties2Object(properties, messageStoreConfig);

BrokerPathConfigHelper.setBrokerConfigPath(file);
in.close();
}
}

啟動 broker 報錯

wukong@wukongs-MacBook-Pro  ~  docker restart b6b
Error response from daemon: Cannot restart container b6b: Cannot link to a non running container: /rmqnamesrv AS /rmqbrokerv2/namesrv

圖片

報錯提示

原因

這個問題其實就是 name server 沒啟動成功。

關(guān)于我

8 年互聯(lián)網(wǎng)開發(fā)經(jīng)驗,擅長微服務(wù)、分布式、架構(gòu)設(shè)計。目前在一家大型上市公司從事基礎(chǔ)架構(gòu)和性能優(yōu)化工作。

InfoQ 簽約作者、藍橋簽約作者、阿里云專家博主、51CTO 紅人。

責任編輯:武曉燕 來源: 悟空聊架構(gòu)
相關(guān)推薦

2022-03-18 13:58:00

RocketMQ消息隊列

2021-11-29 07:47:56

RocketMQ分布式消息

2022-07-18 21:53:46

RocketMQ廣播消息

2022-06-13 11:05:35

RocketMQ消費者線程

2023-04-11 08:35:22

RocketMQ云原生

2022-07-11 11:06:11

RocketMQ函數(shù).消費端

2022-12-20 07:39:46

2023-11-20 08:18:49

Netty服務(wù)器

2023-12-21 17:11:21

Containerd管理工具命令行

2023-11-06 08:16:19

APM系統(tǒng)運維

2021-05-29 10:11:00

Kafa數(shù)據(jù)業(yè)務(wù)

2023-07-31 08:18:50

Docker參數(shù)容器

2022-11-11 19:09:13

架構(gòu)

2021-01-21 08:01:24

UbuntuLinuxM1 Mac

2021-01-21 12:20:06

MacUbuntu Linu蘋果

2021-11-12 06:11:00

M1 MacLinuxCanonical

2022-07-04 11:06:02

RocketMQ事務(wù)消息實現(xiàn)

2022-06-27 11:04:24

RocketMQ順序消息

2022-02-28 12:07:56

RxJS函數(shù)式

2022-02-24 07:34:10

SSL協(xié)議加密
點贊
收藏

51CTO技術(shù)棧公眾號