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
检验镜像是否构建成功
2、构建rocketmq-console-ng 镜像
步骤一
git clone https://github.com/apache/rocketmq-externals.git
步骤二
进入rocketmq-externals
的rocketmq-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中
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界面如图
通过localhost:8181
访问控制台(rocketmq.yml
的mqconsole
配置的端口号)
IP设置验证
在控制台的Cluster中,检查Broker的地址是否成功设置为本机IP
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仓库中
步骤二
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");
控制台查看消息