Mac使用Docker安装RocketMQ,集成到SpringBoot项目

Docker安装RocketMQ,集成到SpringBoot项目

1、构建rocketmq-docker镜像

步骤一

git clone https://github.com/apache/rocketmq-docker.git

步骤二

选择RocketMQ版本并构建镜像

cd image-build
sh build-image.sh RMQ-VERSION BASE-IMAGE
# 这里是我使用的是:sh build-image.sh 4.8.0 alpine

通过docker images检验镜像是否构建成功

rocketmq-0



2、构建rocketmq-console-ng 镜像

步骤一

git clone https://github.com/apache/rocketmq-externals.git

步骤二

进入rocketmq-externalsrocketmq-console目录执行 mvn clean package -Dmaven.test.skip=true

cd rocketmq-externals
cd rocketmq-console
mvn clean package -Dmaven.test.skip=true

执行完成后,将target中的jar包复制到src/main/docker中

rocketmq-2

rocketmq-1



3、创建配置文件

步骤一

创建存放配置文件的文件夹 /Users/midas/Desktop/study/java/rocketmq/rocketmq/conf/


步骤二

创建配置文件 broker.conf,放到步骤一创建的conf文件夹中

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

brokerClusterName = DefaultCluster
brokerName = broker-b
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH

# Set self-defined brokerIP address (e.g. the host node's) 
brokerIP1=本机IP
注:

1、 broker.conf 最后一行的 brokerIP1要设置为本机IP

2、Mac系统通过ifconfig 查询本机IP


步骤三

创建配置文件rocketmq.yml,放到步骤一创建的conf文件夹中

version: '3'
services:
  namesrv:
    image: apacherocketmq/rocketmq:4.8.0-alpine
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    command: sh mqnamesrv
  broker:
    image: apacherocketmq/rocketmq:4.8.0-alpine
    container_name: rmqbroker
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
    volumes:
      - /Users/midas/Desktop/study/java/rocketmq/rocketmq/conf/broker.conf:/home/rocketmq/rocketmq-4.8.0/conf/broker.conf
    command: sh mqbroker -n namesrv:9876 -c /home/rocketmq/rocketmq-4.8.0/conf/broker.conf
    depends_on:
      - namesrv
  mqconsole:
    image: candice0630/rocketmq-console-ng:2.0
    container_name: rmqconsole
    ports:
      - 8181:8080
    environment:
      JAVA_OPTS: -Drocketmq.config.namesrvAddr=namesrv:9876 -Drocketmq.config.isVIPChannel=false
    depends_on:
      - namesrv

注:

1、 要修改配置文件volumes中的/Users/midas/Desktop/study/java/rocketmq/rocketmq/conf/broker.conf,改成步骤二自己创建的broker.conf的路径

2、image的版本,根据第1步构建的rocketmq-docker镜像来修改,此处选择4.8.0-alpine



4、通过rocketmq.yml构建镜像组

docker-compose -f rocketmq.yml up -d

打开Docker界面如图

rocketmq-3

通过localhost:8181访问控制台(rocketmq.ymlmqconsole配置的端口号)


IP设置验证

在控制台的Cluster中,检查Broker的地址是否成功设置为本机IP

rocketmq-4


5、集成到SpringBoot项目

步骤一

pom.xml导入RocketMQ依赖

<!--        RocketMQ-->
<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.0.2</version>
</dependency>
注:

这一步如果maven依赖下载失败,可以去手动下载缺少的jar包,放入本地的maven仓库中

https://mvnrepository.com/


步骤二

application.properties添加配置

# rocketMQ
# ip为本机ip ifconfg查询
rocketmq.name-server=192.168.3.51:9876
rocketmq.producer.group=default

简单使用

注入RocketMQTemplate

@Resource
private RocketMQTemplate rocketMQTemplate;

发送消息

// 前面的参数是Topic名称,随意取一个
// 后面的参数是要发送的消息
rocketMQTemplate.convertAndSend("DEMO_TOPIC", "hello world");

控制台查看消息

rocketmq-5


参考

M1版本Mac通过Docker安装RocketMQ | 蝉 (jarvanbest.com)

https://blog.csdn.net/mefly521/article/details/84394483