配色: 字号:
rocketmq参数配置
2017-07-06 | 阅:  转:  |  分享 
  
下载代码:gitclonehttps://github.com/tgou/RocketMQ1.

打包:mvn-Dmaven.test.skip=truecleanpackageinstallassembly:assembly-U2.

该配置首先从java属性rocketmq.home.dir中获取,如果没有获取到从系统环境变量ROCKETMQ_HOME中获取1)

虽然该配置是可选,但是前提是已经配置了rocketmq.home.dir或者ROCKETMQ_HOME2)

rocketmqHome=/home/admin/XX可选)i.

该配置首先从java属性rocketmq.namesrv.addr中获取,如果没有获取到从系统环境变量NAMESRV_ADDR中获取1)

该配置也可以从启动broker的参数中配置:-n"127.0.0.1:9876"2)

虽然该配置是可选,但是前提是已配置上述三种方法之一3)

namesrvAddr=127.0.0.1:9876;192.168.0.3:9876(可选)ii.

该配置默认从系统可用地址中选择一个1)

在某些场景可以手动配置ip,例如程序运行在虚拟机中外部无法访问默认地址,或者用来解决docker本地ip外部无法访问的问题2)

brokerIP1=127.0.0.1(可选)iii.

broker的ha地址,其它用途同上,不过一般不需要配置1)

brokerIP2=127.0.0.1(可选)iv.

该选项虽然有默认值,但是线上环境最好填写,要不然集群注册会有问题1)

属于同一个主备配置的broker的brokerName要一样2)

该选项默认取当前机器地址,如果取不到默认是"DEFAULT_BROKER"3)

brokerName=broker_aaa_bb(必填)v.

该选项默认是"DEFAULT_CLUSTER"1)

当需要通过同一个namesrv管理多个集群的时候,不同集群配置不同的值2)

brokerClusterName=DEFAULT_CLUSTER(可选)vi.

该选项默认是0,代表主1)

当配置主备的时候,备库需要递增,例如1,2等2)

brokerId=0(必填)vii.

默认8,表示默认为每个topic创建的queue的数量1)

defaultTopicQueueNums=8(可选)viii.

当topic不存在的时候自动创建topic,默认为true1)

线上最好关闭,有利于管理topic2)

autoCreateTopicEnable=trueix.

当订阅组不存在的时候,自动创建,默认为true1)

线上最好关闭,便于管理消息订阅组2)

autoCreateSubscriptionGroup=truex.

是否要拒绝事务消息,默认为false1)

当broker不希望支持事务消息的时候,可以设置为true2)

rejectTransactionMessage=falsexi.

是否通过域名系统获得namesrv的地址,默认为false1)

当为了提高namesrv地址的灵活性,可以设置为true,当打开该选项的时候,上边namesrvAddr配置中所述的都可以不配置2)

fetchNamesrvAddrByAddressServer=falsexii.

broker配置a.

默认地址为java属性的user.home+"store",也就是存储在当前用户目录的store目录下1)

storePathRootDir=/home/admin/store(可选)i.

默认地址为当前用户目录user.home+"store"+"commitlog"1)

storePathCommitLog=/home/admin/store/commitlogii.

commitlog刷盘的间隔,默认为1000毫秒,即1秒1)

flushIntervalCommitLog=1000(可选)iii.

是否是定时刷盘,默认为false,也就是实时刷盘,实时刷盘是指有数据写入就会触发刷盘逻辑,如果满足刷页条件就刷盘1)

flushCommitLogTimed=false(可选)iv.

何时触发删除文件,默认是凌晨4点删除文件1)

该时间是服务器时间,配置服务器压力最低的时间就可以2)

deleteWhen="04"(可选)v.

文件保留时间,单位小时1)

fileReservedTime=72(可选)vi.

默认值是1024512=524288,也就是512k1)

maxMessageSize=524288(可选)vii.

最大被拉取的消息字节数,消息在内存,默认256k1)

maxTransferBytesOnMessageInMemory=(可选)viii.

最大被拉取的消息个数,消息在内存,默认32个1)

maxTransferCountOnMessageInMemory=32(可选)ix.

最大被拉取的消息字节数,消息在磁盘,默认64k1)

maxTransferBytesOnMessageInDisk=(可选)x.

最大被拉取的消息个数,消息在磁盘,默认8个1)

maxTransferCountOnMessageInDisk=8(可选)xi.

命中消息在内存的最大比例1)

accessMessageInMemoryMaxRatio=40(可选)xii.

是否开启消息索引功能1)

messageIndexEnable=true(可选)xiii.

是否使用安全的消息索引功能,即可靠模式。可靠模式下,异常宕机恢复慢,非可靠模式下,异常宕机恢复快1)

messageIndexSafe=falsexiv.

store存储配置b.

普通配置-该配置都写在properties文件中3.

打包与配置

2015年10月22日15:04

分区rocketmq的第1页

是否使用安全的消息索引功能,即可靠模式。可靠模式下,异常宕机恢复慢,非可靠模式下,异常宕机恢复快1)

如果不设置,则从NameServer获取MasterHA服务地址1)

haMasterAddress=127.0.0.1(可选)xv.

默认是ASYNC_MASTER,异步复制master1)

还有SYNC_MASTER-同步双写master;SLAVE-slave服务器2)

brokerRole=ASYNC_MASTER(可选)xvi.

默认是ASYNC_FLUSH,异步刷盘1)

还有SYNC_FLUSH,同步刷盘2)

flushDiskType=ASYNC_FLUSH(可选)xvii.

磁盘空间超过90%警戒水位,自动开始删除文件1)

cleanFileForciblyEnable=truexviii.

分区rocketmq的第2页

exportROCKETMQ_HOME=/home/rocketmqa.

将bin目录下的文件设置为可执行,chmod+xmqb.

设置环境变量1.

配置jvm参数,在runserver.sh中a.

运行nohupmqnamesrv&b.

线上日志要配置监控c.

启动namesrv2.

配置jvm参数,在runbroker.sh中a.

调整配置文件,根据需求是多m还是ms结构,其中nameSrv的地址可以配置在配置文件

中,也可以写到运行命令中

b.

运行nohupshmqbroker-n"127.0.0.1:9876"-c../conf/2m-noslave/broker-a.properties&c.

事务启动运行nohupshmqbroker-n"127.0.0.1:9876"-c../conf/2m-noslave/broker-

a.properties-tc../conf/rocketmq.yaml&

d.

CREATETABLE`t_transaction`(

`id`bigint(20)unsignedNOTNULLAUTO_INCREMENT,

`broker_name`varchar(50)NOTNULL,

`offset`bigint(20)unsignedNOTNULL,

`producer_group`varchar(50)NOTNULL,

`gmt_create`datetimeNOTNULL,

PRIMARYKEY(`id`),

KEY`bpo_idx`(`broker_name`,`producer_group`,`offset`),

KEY`bpg_idx`(`broker_name`,`producer_group`,`gmt_create`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8

也需要修改rocketmq.yaml配置中的brokerName,跟对应的broker一样

其中事务消息需要去数据库建表e.

启动broker3.

安装

2015年10月22日15:12

分区rocketmq的第3页

sh${ROCKETMQ_HOME}/bin/tools.shcom.alibaba.rocketmq.example.quickstart.Producera.

sh${ROCKETMQ_HOME}/bin/tools.sh

com.alibaba.rocketmq.example.transaction.TransactionProducer

b.

sh${ROCKETMQ_HOME}/bin/tools.shcom.alibaba.rocketmq.example.quickstart.Consumerc.

运行例子1.

测试

2015年10月22日16:57

分区rocketmq的第4页

Themostcommonlyusedmqadmincommandsare:1.

updateTopicUpdateorcreatetopic

deleteTopicDeletetopicfrombrokerandNameServer.

updateSubGroupUpdateorcreatesubscriptiongroup

deleteSubGroupDeletesubscriptiongroupfrombroker.

updateBrokerConfigUpdatebroker''sconfig

topicRouteExaminetopicrouteinfo

topicStatusExaminetopicStatusinfo

brokerStatusFetchbrokerruntimestatusdata

queryMsgByIdQueryMessagebyId

queryMsgByKeyQueryMessagebyKey

queryMsgByOffsetQueryMessagebyoffset

printMsgPrintMessageDetail

producerConnectionQueryproducer''ssocketconnectionandclientversion

consumerConnectionQueryconsumer''ssocketconnection,clientversionandsubscription

consumerProgressQueryconsumers''sprogress,speed

consumerStatusQueryconsumer''sinternaldatastructure

cloneGroupOffsetcloneoffsetfromothergroup.

clusterListListallofclusters

topicListFetchalltopiclistfromnameserver

updateKvConfigCreateorupdateKVconfig.

deleteKvConfigDeleteKVconfig.

wipeWritePermWipewritepermofbrokerinallnameserver

resetOffsetByTimeResetconsumeroffsetbytimestamp(withoutclientrestart).

updateOrderConfCreateorupdateordeleteorderconf

cleanExpiredCQCleanexpiredConsumeQueueonbroker.

startMonitoringStartMonitoring

checkMsgCheckMessageStore

statsAllTopicandConsumertpsstats

syncDocsSynchronizewikiandissuetogithub.com

See''mqadminhelp''formoreinformationonaspecificcommand.

按照msgId查询消息:mqadminqueryMsgById-i0A00020F00002A9F000000000000D352-n

127.0.0.1:9876

2.

下载代码:gitclonehttps://github.com/tgou/rocketmq-consolea.

配置config.properties中的namesrv地址b.

打包:mvncleanpackage-Dmaven.test.skip=truec.

放到web容器中运行d.

安装web管理界面3.

运维

2015年10月22日17:09

分区rocketmq的第5页

事务日志表设计1.

设计要点2.

dispatch的时候如果是prepare的事务消息,插入db(可以批量提高性能,需要考虑db不可用如何处理)○

位置在DefaultMessageStore的doDispatch方法中○

prepare事务日志插入?

dispatch的时候如果是rollback事务消息,删除db事务日志○

位置在DefaultMessageStore的doDispatch方法中○

rollback事务日志删除?

同上○

commit事务日志删除?

遍历当前broker的XX秒之内的prepare事务日志,并通过offset拿到该消息的详情,通过producer_group拿到机器ip进行回查○

每个broker单线程定时程序回查prepare事务日志○

check事务回查?

由于requestDispatch中的消息消费顺序跟commitLog的顺序是一样的,所以在每次事务日志成功写入db之后更新当前事务日志的checkpoint(此处可以进行批量处

理之后再记录checkpoint)



事务日志回滚的时候,拿到所有checkpoint的最小值进行recovery,重新走dispatch流程○

事务日志redo?

○由于recover消息的代码是在BrokerController的load期间进行的,所以初始化db的代码要在load的时候加载,而不能放到start的时候加载

?事务消息恢复

属性名类型长度备注

idlong表主键,应用中不使用

broker_namevarchar50配置文件里的brokerName,一定要配置,而且不要改

offsetbigintbroker内commitLog的offset

producer_groupvarchar50生产者配置的group,不要轻易修改,如果更改也要进行版本兼容,要不然事务回查会有问题

gmt_createdatetime日志创建时间

事务设计

2015年10月19日16:12

分区rocketmq的第6页

献花(0)
+1
(本文系关平藏书首藏)