初次使用rocketmq docker方式安装采坑指南

第一步:

1.参考文章
https://blog.csdn.net/fenglibing/article/details/92378090
先按照这个里面走了一遍;在客户端发送消息的时候
RocketMQ会指定为内网地址,使用的是172.17.0.3。会导致外网生产者无法连接到broker。

ps其中重要步骤:
docker search rocketmq

curl https://registry.hub.docker.com/v1/repositories/foxiswho/rocketmq/tags\
| tr -d '[\[\]" ]' | tr '}' '\n'\
| awk -F: -v image='foxiswho/rocketmq' '{if(NR!=NF && $3 != ""){printf("%s:%s\n",image,$3)}}'

docker run -d -p 9876:9876 --name rmqserver  foxiswho/rocketmq:server-4.5.1

docker run -d -p 10911:10911 -p 10909:10909\
 --name rmqbroker --link rmqserver:namesrv\
 -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Duser.home=/opt"\
 -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m"\
 foxiswho/rocketmq:broker-4.5.1


docker run -d --name rmqconsole -p 8180:8080 --link rmqserver:namesrv\
 -e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876\
 -Dcom.rocketmq.sendMessageWithVIPChannel=false"\
 -t styletang/rocketmq-console-ng

第二步:

2参考文章
https://www.cnblogs.com/pc-m/p/11046848.html

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

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

关键一这样的方式启动;注意其中的–link rmqnamesrv:namesrv 要与第一篇博文保持一致(或者和自己的docker保持一致)

2.1更改配置文件

brokerIP1 = xxx.xxx.xxx.xxx。这里的ip地址配置成自己虚拟机的地址

docker exec -it rmqbroker bash
cd ../conf
vi broker.conf

全部配置如下:
在这里插入图片描述

2.2 重启启动docker容器

docker restart rmqbroker

3.java启动

3.1maven 配置

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

3.2 java程序

public class Producer {
    
    
    public static void main(String[] args) {
    
    
        DefaultMQProducer producer = new DefaultMQProducer("Producer");
        producer.setNamesrvAddr("192.168.56.10:9876");
        try {
    
    
            producer.start();

            Message msg = new Message("PushTopic",
                    "push",
                    "1",
                    "Just for test.".getBytes());

            SendResult result = producer.send(msg);
            System.out.println("id:" + result.getMsgId() +
                    " result:" + result.getSendStatus());

            msg = new Message("PushTopic",
                    "push",
                    "2",
                    "Just for test.".getBytes());

            result = producer.send(msg);
            System.out.println("id:" + result.getMsgId() +
                    " result:" + result.getSendStatus());

            msg = new Message("PushTopic",
                    "push",
                    "1",
                    "Just for test.".getBytes());

            result = producer.send(msg);
            System.out.println("id:" + result.getMsgId() +
                    " result:" + result.getSendStatus());
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }finally{
    
    
            producer.shutdown();
        }
    }
}

运行:看结果
在这里插入图片描述
如图所示:Topic下面的三条消息

猜你喜欢

转载自blog.csdn.net/qq_21561833/article/details/120252738