1. 安装 Namesrv
docker pull rocketmqinc/rocketmq:latest
启动容器
docker run -d -p 9876:9876 -v data/rocketmq/logs:/root/logs -v data/rocketmq/store:/root/store --name rmqnamesrv -e "MAX_POSSIBLE_HEAP=100000000" docker.io/rocketmqinc/rocketmq:latest sh mqnamesrv
2.安装 broker 服务器
与上步是同一个镜像,如果上步完成,此步无需拉取
创建 broker.conf 文件
在 data/rocketmq/conf 目录下创建 broker.conf 文件
在 broker.conf 中写入如下内容
brokerClusterName = DefaultClusterbrokerName = broker-a brokerId = 0deleteWhen = 04fileReservedTime = 48brokerRole = ASYNC_MASTERflushDiskType = ASYNC_FLUSHbrokerIP1 = {本地外网 IP}autoCreateTopicEnable=true
brokerIP1 要修改成你自己宿主机的 IP
启动容器
docker run -d -p 10911:10911 -p 10909:10909 -v data/rocketmq/logs:/root/logs -v data/rocketmq/store:/root/store -v data/rocketmq/conf/broker.conf:/opt/rocketmq-latest/conf/broker.conf --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq:latest sh mqbroker -c opt/rocketmq-latest/conf/broker.conf
3. 安装 rocketmq 控制台
拉取镜像
docker pull pangliang/rocketmq-console-ng
启动容器
docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr={本地外网 IP}:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -t pangliang/rocketmq-console-ng
访问地址:http://本地外网 IP:8080/
4,Demo
1.生产者
DefaultMQProducer producer = new DefaultMQProducer("s2");producer.setNamesrvAddr("121.199.21.87:9876");producer.start();Message msg = new Message();msg.setTopic("mytopic");msg.setTags("mytag");msg.setBody("mybody".getBytes());try {producer.send(msg);} catch (Exception e) {e.printStackTrace();}
2.消费者
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("s1");consumer.setNamesrvAddr("121.199.21.87:9876");try {consumer.subscribe("mytopic", "mytag");} catch (MQClientException e) {e.printStackTrace();}consumer.registerMessageListener(new MessageListenerConcurrently() {public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {for(int i=0; i<msgs.size(); i++){MessageExt msg = msgs.get(i);System.out.println(msg.getTopic() + " " + msg.getTags() + " " + new String(msg.getBody()));}return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;}});consumer.start();
3.pom.xml
<dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.6.0</version></dependency>
代码地址:https://github.com/1765348740/rocketmq
文章转载自一心藏一人,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




