在虚拟机使用docker compose部署rocketmq

首先要开一台虚拟机,我的虚拟机IP是192.168.141.130

虚拟机上有docker环境

# 创建好目录
mkdir /opt/rocketmq
cd /opt/rocketmq

# 建broker配置文件
vim broker.conf

broker.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-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1=192.168.141.130
namesrvAddr=192.168.141.130:9876

配置brokerIP1为了本地Java应用可以通过此IP访问到,不配置的话默认是172.xxx.xxx.xxx,在java应用中会出现sendDefaultImpl call timeout连接超时的异常

接下来编写docker-compose.yml

# 新建
vim docker-compose.yml
# 直接粘贴内容
version: '3.8'
services:
  namesrv:
    image: apache/rocketmq:5.3.0
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    networks:
      - rocketmq
    command: sh mqnamesrv
  broker:
    image: apache/rocketmq:5.3.0
    container_name: rmqbroker
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
    environment:
      - NAMESRV_ADDR=rmqnamesrv:9876
    depends_on:
      - namesrv
    networks:
      - rocketmq
    command: sh mqbroker -c /home/rocketmq/rocketmq-5.3.0/conf/broker.conf #用写的配置文件运行
    volumes:
      - ./broker.conf:/home/rocketmq/rocketmq-5.3.0/conf/broker.conf
  proxy:
    image: apache/rocketmq:5.3.0
    container_name: rmqproxy
    networks:
      - rocketmq
    depends_on:
      - broker
      - namesrv
    ports:
      - 8080:8080
      - 8081:8081
    restart: on-failure
    environment:
      - NAMESRV_ADDR=rmqnamesrv:9876
    command: sh mqproxy
  dashboard:
    image: apacherocketmq/rocketmq-dashboard
    container_name: rmqdashboard
    networks:
      - rocketmq
    depends_on:
      - broker
      - namesrv
      - proxy
    ports:
      - 9999:8080 # 通过192.168.141.130:9999访问,可自行更改
    environment:
      - JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.141.130:9876
networks:
  rocketmq:
    driver: bridge

# 最后运行
docker compose up -d
# 放几个其他命令
docker compose stop # 停止
docker compose start # 运行
docker compose down # 移除

访问http://192.168.141.130:9999

在这里插入图片描述

引入pom测试

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.3.1</version>
</dependency>
rocketmq:
  name-server: 192.168.141.130:9876
  # 默认的消息组
  producer:
    group: chatGroup
    send-message-timeout: 3000

如果引入2.2.2版本会出现bean无法被注入的情况,不知道什么原因,用2.3.1(目前最新版本)就没有问题

@Autowired
private RocketMQTemplate rocketMQTemplate;

@Override
public void run(String... args) throws Exception {
    System.out.println("开始发送");
    rocketMQTemplate.send("test-topic", MessageBuilder.withPayload("123").build());
    System.out.println("结束");
}

发送成功啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你熬夜了吗?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值