上篇文章說了一下在Namesrv啓動時,它主要做了什麼事情,從中可以知道,如果想正確的啓動或修改Namesrv的啓動配置時,會有幾種不同的方式。
添加日誌配置文件
如果是在本地Eclipse中使用Rocketmq的源碼項目啓動,需要添加日誌配置文件,在項目下創建conf文件夾,添加配置文件:logback-namesrv.xml,內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="DefaultAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${user.home}/logs/rocketmqlogs/namesrv_default.log</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/namesrv_default.%i.log.gz</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>5</maxIndex>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>100MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
</appender>
<appender name="RocketmqNamesrvAppender_inner"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${user.home}/logs/rocketmqlogs/namesrv.log</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${user.home}/logs/rocketmqlogs/otherdays/namesrv.%i.log.gz</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>5</maxIndex>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>100MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
</appender>
<appender name="RocketmqNamesrvAppender" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="RocketmqNamesrvAppender_inner"/>
<discardingThreshold>0</discardingThreshold>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<append>true</append>
<encoder>
<pattern>%d{yyy-MM-dd HH\:mm\:ss,SSS} %p %t - %m%n</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
</appender>
<logger name="RocketmqNamesrv" additivity="false">
<level value="debug"/>
<appender-ref ref="RocketmqNamesrvAppender"/>
<appender-ref ref="STDOUT"/>
</logger>
<logger name="RocketmqCommon" additivity="false">
<level value="INFO"/>
<appender-ref ref="RocketmqNamesrvAppender"/>
</logger>
<logger name="RocketmqRemoting" additivity="false">
<level value="INFO"/>
<appender-ref ref="RocketmqNamesrvAppender"/>
</logger>
<logger name="RocketmqNamesrvConsole" additivity="false">
<level value="INFO"/>
<appender-ref ref="STDOUT"/>
</logger>
<root>
<level value="INFO"/>
<appender-ref ref="DefaultAppender"/>
</root>
</configuration>
設置rocketmqHome的值
在Namesrv服務啓動的時候,最重要的一個配置就是rocketmqHome的路徑,設置它的路徑有以下幾種方式:
-
設置環境變量
在官方發佈的運行包裏面,它的啓動腳本就是使用的設置環境變量的方式。這個就不多說了。這裏主要說一下如果我們想本地調度,在Eclipse中如何設置。
打開eclipse->run->Debug Configurations
-
使用JVM參數
在eclipse中添加vm參數:
-Drocketmq.home.dir=/home/rocketmq
- 使用配置文件
如果使用配置文件,只需要在啓動命令行參數中,指定配置文件的路徑即可。
-c /home/rocketmq/conf/namesrv.properties
在配置文件中添加配置項
rocketmqHome=/home/rocketmq/
配置文件中的配置項,可以是NamesrvConfig和NettyServerConfig對象中的所有字段。
#優先級
- 通過配置文件配置是最高優先級,它會覆蓋其它的配置。
- VM參數是第二優先級
- 環境變量是第三優先級,是默認的值。