rocketmq数据多久删除_RocketMQ单机版配置(试水篇)

fcb5fd729c53a42e0e6e5cfab2df74f2.png

一、安装与配置

下载

官网:http://rocketmq.apache.org/

如:rocketmq-all-4.0.0-incubating-bin-release.zip

解压文件之后,目录结构如下

-rocketmq
    - LICENSE
    - NOTICE
    - README.md
    - benchmark
    - bin
    - conf
        - 2m-2s-async // 多master异步复制模式
        - 2m-noslave  // 多master无slave模式
        - 2m-2s-sync  // 多master同步复制模式
    - lib

可以看到上面的文件文件解压之后,在conf文件夹里面存在2m-noslave、2m-2s-async、2m-2s-sync文件夹 ,

2m-noslave 两主,无从的配置

2m-2s-async 两主,两从,同步复制数据的配置

2m-2s-sync 两主,两从,异步复制数据的配置

跑demo的话,用这个里面的就可以直接玩玩了。

broker配置文件详解

 # 默认的集群名称
brokerClusterName=DefaultCluster
 # broke名称
brokerName=broker-a
# Broker 对外服务的监听端口 
listenPort=10911
# 0为master, 大于0的为slave
brokerId=0   
 # 删除文件时间点,默认凌晨 4点 ,PS : 在每天的什么时间删除已经超过文件保留时间的 commit log
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE  从机
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘 
flushDiskType=ASYNC_FLUSH
# broker IP地址 
brokerIP1=localhost
# nameServer地址,分号分割
namesrvAddr=localhost:9876
# 是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# 存储 commit log 的路径
storePathCommitLog = /app/rocketmq/stroe/commitlog
#存储 consume queue 的路径
storePathConsumerQueue = /app/rocketmq/stroe/commitlog
# commit log 的映射文件大小
mapedFileSizeCommitLog = 1024 * 1024 * 1024

配置启动

rocketMq默认的内存配置占用内存比较大,因此,需要修改一下启动参数

修改broker启动参数

f36f2b861dbf516938dd095c3054dee2.png

修改nameServer启动参数

39939728f6a4c82a33cf4c6cae48d43d.png

启动命令

启动nameSrv

nohup sh mqnamesrv > /app/rocketmq/logs/mqnamesrv.log 2>&1 &

查看/app/rocketmq/logs/mqnamesrv.log日志

Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
Java HotSpot(TM) 64-Bit Server VM warning: Cannot open file /dev/shm/rmq_srv_gc.log due to No such file or directory

Java HotSpot(TM) 64-Bit Server VM warning: MaxNewSize (131072k) is equal to or greater than the entire heap (131072k).  A new max generation size of 131008k will be used.
The Name Server boot success. serializeType=JSON

启动broker

nohup sh ./mqbroker -c /app/rocketmq/conf/2m-2s-async/broker-a.properties > /app/rocketmq/logs/broker-a.log 2>&1 &

查看/app/rocketmq/logs/broker-a.log日志

Java HotSpot(TM) 64-Bit Server VM warning: Cannot open file /dev/shm/mq_gc_pid22422.log due to No such file or directory

The broker[broker-a, localhost:10911] boot success. serializeType=JSON and name server is localhost:9876

关闭命令

# 关闭borker
sh ./mqshutdown broker
# 关闭nameSrv
sh ./mqshutdown namesrv

简单测试

消费者

public class ConsumerTest {

    public static void main(String[] args) throws MQClientException, UnsupportedEncodingException, RemotingException, InterruptedException, MQBrokerException {
        // 设置生产者组名
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("my_producer_group");
        // 设置NameServer地址
        consumer.setNamesrvAddr("localhost:9876");
        // 订阅的主题
        consumer.subscribe("MyTopic", "*");
        // 注册消息监听
        consumer.registerMessageListener(new MessageListenerConcurrently() {
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
                System.out.printf("%s Receive New Messages: %s %n", Thread.currentThread().getName(), msgs);
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });
        // 启动
        consumer.start();
        System.out.printf("Consumer Started.%n");
    }

}

生产者

public class ProducerTest {

    public static void main(String[] args) throws MQClientException, UnsupportedEncodingException, RemotingException, InterruptedException, MQBrokerException {
        // 设置生产者组名
        DefaultMQProducer producer = new DefaultMQProducer("my_producer_group");
        // 设置NameServer地址
        producer.setNamesrvAddr("localhost:9876");
        // 启动
        producer.start();
        for (int i = 0; i < 5; i++) {
            // 创建一条消息,包含topic、tag以及消息内容
            Message msg = new Message("MyTopic", "MyTag", ("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET));
            // 发送结果
            SendResult sendResult = producer.send(msg);
            System.out.printf("%s%n", sendResult);
            Thread.sleep(50);
        }
        // 不用的时候关闭
        producer.shutdown();
    }

}

分别启动生产者和消费者

生产者日志

16:29:33.569 [main] DEBUG io.netty.util.internal.logging.InternalLoggerFactory - Using SLF4J as the default logging framework
SendResult [sendStatus=SEND_OK, msgId=0AD0C99C67F118B4AAC26562D19D0000, offsetMsgId=7F00000100002A9F0000000001140F64, messageQueue=MessageQueue [topic=MyTopic, brokerName=broker-a, queueId=3], queueOffset=25002]
SendResult [sendStatus=SEND_OK, msgId=0AD0C99C67F118B4AAC26562D1E90001, offsetMsgId=7F00000100002A9F0000000001141015, messageQueue=MessageQueue [topic=MyTopic, brokerName=broker-a, queueId=0], queueOffset=25002]
SendResult [sendStatus=SEND_OK, msgId=0AD0C99C67F118B4AAC26562D2350002, offsetMsgId=7F00000100002A9F00000000011410C6, messageQueue=MessageQueue [topic=MyTopic, brokerName=broker-a, queueId=1], queueOffset=25003]
SendResult [sendStatus=SEND_OK, msgId=0AD0C99C67F118B4AAC26562D2720003, offsetMsgId=7F00000100002A9F0000000001141177, messageQueue=MessageQueue [topic=MyTopic, brokerName=broker-a, queueId=2], queueOffset=25003]
16:29:35.635 [NettyClientSelector_1] INFO RocketmqRemoting - closeChannel: close the connection to remote address[127.0.0.1:10911] result: true
16:29:35.639 [NettyClientSelector_1] INFO RocketmqRemoting - closeChannel: close the connection to remote address[127.0.0.1:10911] result: true
16:29:35.640 [NettyClientSelector_1] INFO RocketmqRemoting - closeChannel: close the connection to remote address[127.0.0.1:9876] result: true

消费者日志

Consumer Started.
ConsumeMessageThread_1 Receive New Messages: [MessageExt [queueId=3, storeSize=177, queueOffset=25002, sysFlag=0, bornTimestamp=1568968175007, bornHost=/127.0.0.1:55037, storeTimestamp=1568968175023, storeHost=/127.0.0.1:10911, msgId=7F00000100002A9F0000000001140F64, commitLogOffset=18091876, bodyCRC=613185359, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='MyTopic', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=25003, CONSUME_START_TIME=1568968175082, UNIQ_KEY=0AD0C99C67F118B4AAC26562D19D0000, WAIT=true, TAGS=MyTag}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 48], transactionId='null'}]] 
ConsumeMessageThread_2 Receive New Messages: [MessageExt [queueId=0, storeSize=177, queueOffset=25002, sysFlag=0, bornTimestamp=1568968175081, bornHost=/127.0.0.1:55037, storeTimestamp=1568968175105, storeHost=/127.0.0.1:10911, msgId=7F00000100002A9F0000000001141015, commitLogOffset=18092053, bodyCRC=1401636825, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='MyTopic', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=25003, CONSUME_START_TIME=1568968175118, UNIQ_KEY=0AD0C99C67F118B4AAC26562D1E90001, WAIT=true, TAGS=MyTag}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 49], transactionId='null'}]] 
ConsumeMessageThread_3 Receive New Messages: [MessageExt [queueId=1, storeSize=177, queueOffset=25003, sysFlag=0, bornTimestamp=1568968175157, bornHost=/127.0.0.1:55037, storeTimestamp=1568968175158, storeHost=/127.0.0.1:10911, msgId=7F00000100002A9F00000000011410C6, commitLogOffset=18092230, bodyCRC=1250039395, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='MyTopic', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=25004, CONSUME_START_TIME=1568968175167, UNIQ_KEY=0AD0C99C67F118B4AAC26562D2350002, WAIT=true, TAGS=MyTag}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 50], transactionId='null'}]] 
ConsumeMessageThread_4 Receive New Messages: [MessageExt [queueId=2, storeSize=177, queueOffset=25003, sysFlag=0, bornTimestamp=1568968175218, bornHost=/127.0.0.1:55037, storeTimestamp=1568968175223, storeHost=/127.0.0.1:10911, msgId=7F00000100002A9F0000000001141177, commitLogOffset=18092407, bodyCRC=1032136437, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='MyTopic', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=25004, CONSUME_START_TIME=1568968175228, UNIQ_KEY=0AD0C99C67F118B4AAC26562D2720003, WAIT=true, TAGS=MyTag}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 51], transactionId='null'}]] 

看到上面的日志,其实一个非常简单的rocketMq的生产者消费者模型就搭建好了

rocketMq最佳实践

官方提供的一些最佳实践,写的很棒,一般没啥特别要求的,使用这个配置基本上就没啥问题

https://github.com/apache/rocketmq/blob/master/docs/cn/best_practice.md

结语

今天只是非常简单的介绍了一下rocketMq的单机版,一个非常入门级别的教程,后面会写一点深入rocketMq源码分析的文章

http://weixin.qq.com/r/eC-YwJDE7s2RrdSj93pq (二维码自动识别)

笔者微信号:

a7aed0449ef3b90d343fc506d2bfaa74.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值