This is an automated email from the ASF dual-hosted git repository.
aaronai pushed a commit to branch new-official-website-develop
in repository https://gitbox.apache.org/repos/asf/rocketmq-site.git
The following commit(s) were added to refs/heads/new-official-website-develop
by this push:
new 34a60b01 [ISSUE #223]Fix document some codes display and document
format problems
new 4146c663 Merge pull request #241 from mxsm/rocketmq-site-223
34a60b01 is described below
commit 34a60b017cb7a85e65b3b23babfcb0c99ff339f8
Author: mxsm <[email protected]>
AuthorDate: Thu Sep 15 23:02:35 2022 +0800
[ISSUE #223]Fix document some codes display and document format problems
---
.../05message1.md" | 8 ++---
.../06message2.md" | 8 ++---
.../07message3.md" | 2 +-
.../08message4.md" | 2 +-
.../09message5.md" | 4 +--
.../12push.md" | 6 ++--
.../13pull.md" | 8 ++---
.../17Dashboard.md" | 8 ++---
.../18Exporter.md" | 12 +++----
.../16dledger.md" | 2 +-
.../17messagetra.md" | 41 ++++++++++++----------
.../20log.md" | 14 ++++----
.../23local.md" | 30 ++++++++--------
.../31pull-request.md" | 39 ++++++++++----------
14 files changed, 93 insertions(+), 91 deletions(-)
diff --git "a/docs/02-\347\224\237\344\272\247\350\200\205/05message1.md"
"b/docs/02-\347\224\237\344\272\247\350\200\205/05message1.md"
index 84a2e3b3..2882d039 100644
--- "a/docs/02-\347\224\237\344\272\247\350\200\205/05message1.md"
+++ "b/docs/02-\347\224\237\344\272\247\350\200\205/05message1.md"
@@ -9,7 +9,7 @@ RocketMQ 部署安装包默认开启了 **autoCreateTopicEnable** 配置,会
**生产环境强烈建议管理所有主题的生命周期,关闭自动创建参数**,以避免生产集群出现大量无效主题,无法管理和回收,造成集群注册压力增大,影响生产集群的稳定性。
```shell
-> sh bin/mqadmin updateTopic -c DefaultCluster -t TopicTest -n 127.0.0.1:9876
+$ sh bin/mqadmin updateTopic -c DefaultCluster -t TopicTest -n 127.0.0.1:9876
create topic to 127.0.0.1:10911 success.
TopicConfig [topicName=TopicTest, readQueueNums=8, writeQueueNums=8, perm=RW-,
topicFilterType=SINGLE_TAG, topicSysFlag=0, order=false, attributes=null]
```
@@ -61,7 +61,7 @@ Apache RocketMQ可用于以三种方式发送消息:**同步、异步和单向
2. **设置 NameServer 的地址**。Apache
RocketMQ很多方式设置NameServer地址(客户端配置中有介绍),这里是在代码中调用producer的API
setNamesrvAddr进行设置,如果有多个NameServer,中间以分号隔开,比如"127.0.0.2:9876;127.0.0.3:9876"。
3. **第三步是构建消息**。指定topic、tag、body等信息,tag可以理解成标签,对消息进行再归类,RocketMQ可以在消费端对tag进行过滤。
4.
**最后调用send接口将消息发送出去**。同步发送等待结果最后返回SendResult,SendResut包含实际发送状态还包括SEND_OK(发送成功),
FLUSH_DISK_TIMEOUT(刷盘超时), FLUSH_SLAVE_TIMEOUT(同步到备超时),
SLAVE_NOT_AVAILABLE(备不可用),如果发送失败会抛出异常。
-``` javascript {16,15}
+``` java
public class SyncProducer {
public static void main(String[] args) throws Exception {
// 初始化一个producer并设置Producer group name
@@ -104,7 +104,7 @@ public class SyncProducer {
如下是示例代码。
-``` javascript {16,17}
+``` java
public class AsyncProducer {
public static void main(String[] args) throws Exception {
// 初始化一个producer并设置Producer group name
@@ -151,7 +151,7 @@ public class AsyncProducer {
发送方只负责发送消息,不等待服务端返回响应且没有回调函数触发,即只发送请求不等待应答。此方式发送消息的过程耗时非常短,一般在微秒级别。适用于某些耗时非常短,但对可靠性要求并不高的场景,例如日志收集。
-``` javascript {16}
+``` java
public class OnewayProducer {
public static void main(String[] args) throws Exception{
// 初始化一个producer并设置Producer group name
diff --git "a/docs/02-\347\224\237\344\272\247\350\200\205/06message2.md"
"b/docs/02-\347\224\237\344\272\247\350\200\205/06message2.md"
index 00124b7a..9eab8b7d 100644
--- "a/docs/02-\347\224\237\344\272\247\350\200\205/06message2.md"
+++ "b/docs/02-\347\224\237\344\272\247\350\200\205/06message2.md"
@@ -24,7 +24,7 @@
顺序消息的代码如下所示:
-```jsx {13}
+```java
public class Producer {
public static void main(String[] args) throws UnsupportedEncodingException
{
try {
@@ -62,7 +62,7 @@ public class Producer {
:::tip
MessageQueueSelector的接口如下:
-```jsx
+```java
public interface MessageQueueSelector {
MessageQueue select(final List<MessageQueue> mqs, final Message msg, final
Object arg);
}
@@ -80,8 +80,8 @@ public interface MessageQueueSelector {
如果发生变化,那么同一个 ShardingKey
的消息就会发送到不同的队列上,造成乱序。如果不发生变化,那消息将会发送到掉线Broker的队列上,必然是失败的。因此 Apache RocketMQ
提供了两种模式,如果要保证严格顺序而不是可用性,创建 Topic 是要指定 ```-o``` 参数(--order)为true,表示顺序消息:
-```shell {1}
-> sh bin/mqadmin updateTopic -c DefaultCluster -t TopicTest -o true -n
127.0.0.1:9876
+```shell
+$ sh bin/mqadmin updateTopic -c DefaultCluster -t TopicTest -o true -n
127.0.0.1:9876
create topic to 127.0.0.1:10911 success.
TopicConfig [topicName=TopicTest, readQueueNums=8, writeQueueNums=8, perm=RW-,
topicFilterType=SINGLE_TAG, topicSysFlag=0, order=true, attributes=null]
```
diff --git "a/docs/02-\347\224\237\344\272\247\350\200\205/07message3.md"
"b/docs/02-\347\224\237\344\272\247\350\200\205/07message3.md"
index 74b1502e..215ce810 100644
--- "a/docs/02-\347\224\237\344\272\247\350\200\205/07message3.md"
+++ "b/docs/02-\347\224\237\344\272\247\350\200\205/07message3.md"
@@ -25,7 +25,7 @@ Apache RocketMQ 一共支持18个等级的延迟投递,具体时间如下:
## 延时消息示例代码
延迟消息的示例代码如下:
-```javascript {10,11}
+```java
public class ScheduledMessageProducer {
public static void main(String[] args) throws Exception {
// Instantiate a producer to send scheduled messages
diff --git "a/docs/02-\347\224\237\344\272\247\350\200\205/08message4.md"
"b/docs/02-\347\224\237\344\272\247\350\200\205/08message4.md"
index 08b4ea13..e89cb8af 100644
--- "a/docs/02-\347\224\237\344\272\247\350\200\205/08message4.md"
+++ "b/docs/02-\347\224\237\344\272\247\350\200\205/08message4.md"
@@ -4,7 +4,7 @@

-```javascript {10,11,12,13}
+```java
public class SimpleBatchProducer {
public static void main(String[] args) throws Exception {
diff --git "a/docs/02-\347\224\237\344\272\247\350\200\205/09message5.md"
"b/docs/02-\347\224\237\344\272\247\350\200\205/09message5.md"
index a1fd2c5e..77936a35 100644
--- "a/docs/02-\347\224\237\344\272\247\350\200\205/09message5.md"
+++ "b/docs/02-\347\224\237\344\272\247\350\200\205/09message5.md"
@@ -46,7 +46,7 @@
示例代码如下:
-```javascript {39}
+```java
public class TransactionProducer {
public static void main(String[] args) throws MQClientException,
InterruptedException {
TransactionListener transactionListener = new
TransactionListenerImpl();
@@ -125,7 +125,7 @@ public class TransactionProducer {
TransactionListener接口的定义如下:
-````javascript {9,18}
+````java
public interface TransactionListener {
/**
* When send transactional prepare(half) message succeed, this method will
be invoked to execute local transaction.
diff --git "a/docs/03-\346\266\210\350\264\271\350\200\205/12push.md"
"b/docs/03-\346\266\210\350\264\271\350\200\205/12push.md"
index e0a4454c..8372dcaa 100644
--- "a/docs/03-\346\266\210\350\264\271\350\200\205/12push.md"
+++ "b/docs/03-\346\266\210\350\264\271\350\200\205/12push.md"
@@ -2,7 +2,7 @@
RocketMQ Push消费的示例代码如下
-```javascript
+```java
public class Consumer {
public static void main(String[] args) throws InterruptedException,
MQClientException {
// 初始化consumer,并设置consumer group name
@@ -31,7 +31,7 @@ public class Consumer {
首先需要初始化消费者,初始化消费者时,必须填写ConsumerGroupName,同一个消费组的ConsumerGroupName是相同的,这是判断消费者是否属于同一个消费组的重要属性。然后是设置NameServer地址,这里与Producer一样不再介绍。然后是调用subscribe方法订阅Topic,subscribe方法需要指定需要订阅的Topic名,也可以增加消息过滤的条件,比如TagA等,上述代码中指定*表示接收所有tag的消息。除了订阅之外,还需要注册回调接口编写消费逻辑来处理从Broker中收到的消息,调用registerMessageListener方法,需要传入MessageListener的实现,上述代码中是并发消费,因此是MessageListenerConcurrently的实现,其接口如下
:::note MessageListenerConcurrently 接口
-```javascript
+```java
/**
* A MessageListenerConcurrently object is used to receive asynchronously
delivered messages concurrently
*/
@@ -73,7 +73,7 @@ consumer.setMessageModel(MessageModel.BROADCASTING);
因此RocketMQ提供了顺序消费的方式,
顺序消费设置与并发消费API层面只有一处不同,在注册消费回调接口时传入MessageListenerOrderly接口的实现。
-```javascript
+```java
consumer.registerMessageListener(new MessageListenerOrderly() {
AtomicLong consumeTimes = new AtomicLong(0);
@Override
diff --git "a/docs/03-\346\266\210\350\264\271\350\200\205/13pull.md"
"b/docs/03-\346\266\210\350\264\271\350\200\205/13pull.md"
index 1c0e53cd..90db16bc 100644
--- "a/docs/03-\346\266\210\350\264\271\350\200\205/13pull.md"
+++ "b/docs/03-\346\266\210\350\264\271\350\200\205/13pull.md"
@@ -6,7 +6,7 @@
Pull Consumer示例如下
-```javascript
+```java
public class PullConsumerTest {
public static void main(String[] args) throws MQClientException {
DefaultMQPullConsumer consumer = new
DefaultMQPullConsumer("please_rename_unique_group_name_5");
@@ -39,7 +39,7 @@ Set<MessageQueue> queueSet =
consumer.fetchSubscribeMessageQueues("TopicTest");
找到或者构造完队列之后,调用pull方法就可以进行拉取,需要传入拉取的队列,过滤表达式,拉取的位点,最大拉取消息条数等参数。拉取完成后会返回拉取结果`PullResult`,PullResult中的PullStatus表示结果状态,如下所示
-```javascript
+```java
public enum PullStatus {
/**
* Founded
@@ -66,7 +66,7 @@ FOUND表示拉取到消息,NO_NEW_MSG表示没有发现新消息,NO_MATCHED_
Lite Pull Consumer是RocketMQ 4.6.0推出的Pull Consumer,相比于原始的Pull
Consumer更加简单易用,它提供了Subscribe和Assign两种模式,Subscribe模式示例如下
-```javascript
+```java
public class LitePullConsumerSubscribe {
public static volatile boolean running = true;
public static void main(String[] args) throws Exception {
@@ -89,7 +89,7 @@ public class LitePullConsumerSubscribe {
首先还是初始化`DefaultLitePullConsumer`并设置`ConsumerGroupName`,调用subscribe方法订阅topic并启动。与Push
Consumer不同的是,`LitePullConsumer`拉取消息调用的是轮询poll接口,如果能拉取到消息则返回对应的消息列表,否则返回null。通过`setPullBatchSize`可以设置每一次拉取的最大消息数量,此外如果不额外设置,`LitePullConsumer`默认是自动提交位点。在subscribe模式下,同一个消费组下的多个`LitePullConsumer`会负载均衡消费,与PushConsumer一致。
如下是Assign模式的示例
-```javascript
+```java
public class LitePullConsumerAssign {
public static volatile boolean running = true;
public static void main(String[] args) throws Exception {
diff --git
"a/docs/04-\351\203\250\347\275\262\344\270\216\350\277\220\347\273\264/17Dashboard.md"
"b/docs/04-\351\203\250\347\275\262\344\270\216\350\277\220\347\273\264/17Dashboard.md"
index 1a219c68..a585e8c8 100644
---
"a/docs/04-\351\203\250\347\275\262\344\270\216\350\277\220\347\273\264/17Dashboard.md"
+++
"b/docs/04-\351\203\250\347\275\262\344\270\216\350\277\220\347\273\264/17Dashboard.md"
@@ -40,13 +40,13 @@
① 安装docker,拉取 ```rocketmq-dashboard``` 镜像
```shell
-docker pull apacherocketmq/rocketmq-dashboard:latest
+$ docker pull apacherocketmq/rocketmq-dashboard:latest
```
② docker 容器中运行 ```rocketmq-dashboard```
```shell
-docker run -d --name rocketmq-dashboard -e
"JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876" -p 8080:8080 -t
apacherocketmq/rocketmq-dashboard:latest
+$ docker run -d --name rocketmq-dashboard -e
"JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876" -p 8080:8080 -t
apacherocketmq/rocketmq-dashboard:latest
```
:::tip
@@ -69,13 +69,13 @@ docker run -d --name rocketmq-dashboard -e
"JAVA_OPTS=-Drocketmq.namesrv.addr=12
① 编译 ```rocketmq-dashboard```
```shell
-mvn clean package -Dmaven.test.skip=true
+$ mvn clean package -Dmaven.test.skip=true
```
② 运行 ```rocketmq-dashboard```
```shell
-java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar
+$ java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar
```
提示:**Started App in x.xxx seconds (JVM running for x.xxx)** 启动成功
diff --git
"a/docs/04-\351\203\250\347\275\262\344\270\216\350\277\220\347\273\264/18Exporter.md"
"b/docs/04-\351\203\250\347\275\262\344\270\216\350\277\220\347\273\264/18Exporter.md"
index 79bdaf5c..dc83596a 100644
---
"a/docs/04-\351\203\250\347\275\262\344\270\216\350\277\220\347\273\264/18Exporter.md"
+++
"b/docs/04-\351\203\250\347\275\262\344\270\216\350\277\220\347\273\264/18Exporter.md"
@@ -34,8 +34,8 @@ rocketmq-expoter 项目启动后,会获取 rocketmq 的各项 metrics 收集
浏览器通过访问 ip:5557/metrics,会调用 RMQMetricsController 类下的 metrics 方法,其中 ip 为
rocketmq-expoter 项目运行的主机 ip
-```javascript
- private void metrics(HttpServletResponse response) throws IOException {
+```java
+private void metrics(HttpServletResponse response) throws IOException {
StringWriter writer = new StringWriter();
metricsService.metrics(writer);
response.setHeader("Content-Type", "text/plain; version=0.0.4;
charset=utf-8");
@@ -64,7 +64,7 @@ MetricCollectTask 类中有 5 个定时任务,分别为 collectTopicOffset、c
1. 首先初始化TopicList对象,通过mqAdminExt.fetchAllTopicList()方法获取到集群的所有topic信息。
-```javascript
+```java
TopicList topicList = null;
try { topicList = mqAdminExt.fetchAllTopicList();
} catch (Exception ex) {
@@ -76,7 +76,7 @@ MetricCollectTask 类中有 5 个定时任务,分别为 collectTopicOffset、c
2. 将 topic 加入到 topicSet 中,循环遍历每一个 topic,通过
mqAdminExt.examineTopicStats(topic)函数来检查 topic 状态。
-```javascript
+```java
Set < String > topicSet = topicList != null ? topicList.getTopicList() :
null;
for (String topic: topicSet) {
TopicStatsTable topicStats = null;
@@ -91,7 +91,7 @@ MetricCollectTask 类中有 5 个定时任务,分别为 collectTopicOffset、c
3. 初始化 topic 状态 set,用于用于按 broker 划分的 topic 信息位点的 hash 表
brokerOffsetMap,以及一个用于按 broker 名字为 key 的用于存储更新时间戳的 hash 表
brokerUpdateTimestampMap。
-```javascript
+```java
Set<Map.Entry<MessageQueue, TopicOffset>> topicStatusEntries =
topicStats.getOffsetTable().entrySet();
HashMap<String, Long> brokerOffsetMap = new HashMap<>();
HashMap<String, Long> brokerUpdateTimestampMap = new HashMap<>();
@@ -117,7 +117,7 @@ MetricCollectTask 类中有 5 个定时任务,分别为 collectTopicOffset、c
4. 最后通过遍历 brokerOffsetMap 中的每一项,通过调用 metricsService 获取到 metricCollector 对象,调用
RMQMetricsCollector 类中的 addTopicOffsetMetric 方法,将相应的值添加到 RMQMetricsCollector 类中
87 个指标对应的其中一个指标的 cache 中。
-```javascript
+```java
Set<Map.Entry<String, Long>> brokerOffsetEntries = brokerOffsetMap.entrySet();
for (Map.Entry<String, Long> brokerOffsetEntry : brokerOffsetEntries) {
metricsService.getCollector().addTopicOffsetMetric(clusterName,
brokerOffsetEntry.getKey(), topic,
diff --git
"a/docs/05-\346\234\200\344\275\263\345\256\236\350\267\265/16dledger.md"
"b/docs/05-\346\234\200\344\275\263\345\256\236\350\267\265/16dledger.md"
index 6c033748..dd6e01cb 100644
--- "a/docs/05-\346\234\200\344\275\263\345\256\236\350\267\265/16dledger.md"
+++ "b/docs/05-\346\234\200\344\275\263\345\256\236\350\267\265/16dledger.md"
@@ -80,7 +80,7 @@ RocketMQ-on-DLedger Group 是可以水平扩展的,也即可以部署任意多
这里贴出 conf/dledger/broker-n0.conf 的配置举例。
-```
+```properties
brokerClusterName = RaftCluster
brokerName=RaftNode00
listenPort=30911
diff --git
"a/docs/05-\346\234\200\344\275\263\345\256\236\350\267\265/17messagetra.md"
"b/docs/05-\346\234\200\344\275\263\345\256\236\350\267\265/17messagetra.md"
index 6f94051d..a13c634c 100644
--- "a/docs/05-\346\234\200\344\275\263\345\256\236\350\267\265/17messagetra.md"
+++ "b/docs/05-\346\234\200\344\275\263\345\256\236\350\267\265/17messagetra.md"
@@ -12,7 +12,7 @@
### 2.1 Broker端配置文件
这里贴出Broker端开启消息轨迹特性的properties配置文件内容:
-```
+```properties
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
@@ -52,7 +52,7 @@ RocketMQ的消息轨迹特性支持两种存储轨迹数据的方式:
为了尽可能地减少用户业务系统使用RocketMQ消息轨迹特性的改造工作量,作者在设计时候采用对原来接口增加一个开关参数(**enableMsgTrace**)来实现消息轨迹是否开启;并新增一个自定义参数(**customizedTraceTopic**)来实现用户存储消息轨迹数据至自己创建的用户级Topic。
### 4.1 发送消息时开启消息轨迹
-```
+```java
DefaultMQProducer producer = new
DefaultMQProducer("ProducerGroupName",true);
producer.setNamesrvAddr("XX.XX.XX.XX1");
producer.start();
@@ -72,7 +72,7 @@ RocketMQ的消息轨迹特性支持两种存储轨迹数据的方式:
```
### 4.2 订阅消息时开启消息轨迹
-```
+```java
DefaultMQPushConsumer consumer = new
DefaultMQPushConsumer("CID_JODIE_1",true);
consumer.subscribe("TopicTest", "*");
consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
@@ -90,28 +90,31 @@ RocketMQ的消息轨迹特性支持两种存储轨迹数据的方式:
### 4.3 支持自定义存储消息轨迹Topic
在上面的发送和订阅消息时候分别将DefaultMQProducer和DefaultMQPushConsumer实例的初始化修改为如下即可支持自定义存储消息轨迹Topic。
-```
- ##其中Topic_test11111需要用户自己预先创建,来保存消息轨迹;
+```java
+ //其中Topic_test11111需要用户自己预先创建,来保存消息轨迹;
DefaultMQProducer producer = new
DefaultMQProducer("ProducerGroupName",true,"Topic_test11111");
- ......
+ //......
DefaultMQPushConsumer consumer = new
DefaultMQPushConsumer("CID_JODIE_1",true,"Topic_test11111");
- ......
+ //......
```
### 4.4 使用mqadmin命令发送和查看轨迹
- 发送消息
-```shell
-./mqadmin sendMessage -m true --topic some-topic-name -n 127.0.0.1:9876 -p
"your meesgae content"
-```
+
+ ```shell
+ $ ./mqadmin sendMessage -m true --topic some-topic-name -n 127.0.0.1:9876 -p
"your meesgae content"
+ ```
- 查询轨迹
-```shell
-./mqadmin QueryMsgTraceById -n 127.0.0.1:9876 -i "some-message-id"
-```
+
+ ```shell
+ $ ./mqadmin QueryMsgTraceById -n 127.0.0.1:9876 -i "some-message-id"
+ ```
- 查询轨迹结果
-```
-RocketMQLog:WARN No appenders could be found for logger
(io.netty.util.internal.PlatformDependent0).
-RocketMQLog:WARN Please initialize the logger system properly.
-#Type #ProducerGroup #ClientHost #SendTime
#CostTimes #Status
-Pub 1623305799667 xxx.xxx.xxx.xxx 2021-06-10 14:16:40
131ms success
-```
+
+ ```shell
+ RocketMQLog:WARN No appenders could be found for logger
(io.netty.util.internal.PlatformDependent0).
+ RocketMQLog:WARN Please initialize the logger system properly.
+ #Type #ProducerGroup #ClientHost #SendTime
#CostTimes #Status
+ Pub 1623305799667 xxx.xxx.xxx.xxx 2021-06-10 14:16:40
131ms success
+ ```
diff --git
"a/docs/05-\346\234\200\344\275\263\345\256\236\350\267\265/20log.md"
"b/docs/05-\346\234\200\344\275\263\345\256\236\350\267\265/20log.md"
index 06694426..3ea16e69 100644
--- "a/docs/05-\346\234\200\344\275\263\345\256\236\350\267\265/20log.md"
+++ "b/docs/05-\346\234\200\344\275\263\345\256\236\350\267\265/20log.md"
@@ -15,7 +15,7 @@ RocketMQ 的Java SDK 1.7.8.Final 以下的旧版本不支持 log4j2,只支持
### 方式一: 依赖 log4j 作为日志实现
依赖log4j或logback作为日志实现的示例代码如下所示。
-```javascript
+```xml
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
@@ -35,7 +35,7 @@ RocketMQ 的Java SDK 1.7.8.Final 以下的旧版本不支持 log4j2,只支持
使用 log4j 属性配置文件时,配置如下。
-```
+```properties
log4j.appender.mq=org.apache.rocketmq.logappender.log4j.RocketmqLog4jAppender
log4j.appender.mq.Tag=yourTag
log4j.appender.mq.Topic=yourLogTopic
@@ -46,7 +46,7 @@ log4j.appender.mq.layout.ConversionPattern=%d{yyyy-MM-dd
HH:mm:ss} %-4r [%t] (%F
```
使用 log4j xml 配置文件时,将其配置为这样并添加一个异步附加程序:
-```
+```xml
<appender name="mqAppender1"
class="org.apache.rocketmq.logappender.log4j.RocketmqLog4jAppender">
<param name="Tag" value="yourTag" />
<param name="Topic" value="yourLogTopic" />
@@ -65,7 +65,7 @@ log4j.appender.mq.layout.ConversionPattern=%d{yyyy-MM-dd
HH:mm:ss} %-4r [%t] (%F
```
使用 log4j2 时,配置为 this。如果你想要 noneblock,只需为 ref 配置一个 asyncAppender。
-```
+```xml
<RocketMQ name="rocketmqAppender" producerGroup="yourLogGroup"
nameServerAddress="yourRocketmqNameserverAddress"
topic="yourLogTopic" tag="yourTag">
<PatternLayout pattern="%d [%p] hahahah %c %m%n"/>
@@ -74,7 +74,7 @@ log4j.appender.mq.layout.ConversionPattern=%d{yyyy-MM-dd
HH:mm:ss} %-4r [%t] (%F
### 方式二: 依赖 logback 作为日志实现
-```
+```xml
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
@@ -87,7 +87,7 @@ log4j.appender.mq.layout.ConversionPattern=%d{yyyy-MM-dd
HH:mm:ss} %-4r [%t] (%F
</dependency>
```
-```
+```xml
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
@@ -132,7 +132,7 @@ RocketMQ 客户端启动后,会按照如下的默认配置生成日志文件 :
如果需要进行自定义配置 参考 ClientLogger的静态变量定义, 参数意义对齐上文客户端配置。
-```javascript
+```java
public static final String CLIENT_LOG_USESLF4J =
"rocketmq.client.logUseSlf4j";
public static final String CLIENT_LOG_ROOT = "rocketmq.client.logRoot";
public static final String CLIENT_LOG_MAXINDEX =
"rocketmq.client.logFileMaxIndex";
diff --git
"a/docs/06-\345\217\202\346\225\260\351\205\215\347\275\256/23local.md"
"b/docs/06-\345\217\202\346\225\260\351\205\215\347\275\256/23local.md"
index 4bd1b9f1..ae0a8e78 100644
--- "a/docs/06-\345\217\202\346\225\260\351\205\215\347\275\256/23local.md"
+++ "b/docs/06-\345\217\202\346\225\260\351\205\215\347\275\256/23local.md"
@@ -8,31 +8,31 @@ RocketMQ可以令客户端找到Name Server, 然后通过Name Server再找到Bro
- 代码中指定Name Server地址,多个namesrv地址之间用分号分割
-```java
-producer.setNamesrvAddr("192.168.0.1:9876;192.168.0.2:9876");
-
-consumer.setNamesrvAddr("192.168.0.1:9876;192.168.0.2:9876");
-```
+ ```java
+ producer.setNamesrvAddr("192.168.0.1:9876;192.168.0.2:9876");
+
+ consumer.setNamesrvAddr("192.168.0.1:9876;192.168.0.2:9876");
+ ```
- Java启动参数中指定Name Server地址
-```text
--Drocketmq.namesrv.addr=192.168.0.1:9876;192.168.0.2:9876
-```
+ ```text
+ -Drocketmq.namesrv.addr=192.168.0.1:9876;192.168.0.2:9876
+ ```
- 环境变量指定Name Server地址
-```text
-export NAMESRV_ADDR=192.168.0.1:9876;192.168.0.2:9876
-```
+ ```text
+ export NAMESRV_ADDR=192.168.0.1:9876;192.168.0.2:9876
+ ```
- HTTP静态服务器寻址(默认)
-客户端启动后,会定时访问一个静态HTTP服务器,地址如下:<http://jmenv.tbsite.net:8080/rocketmq/nsaddr>,这个URL的返回内容如下:
+
客户端启动后,会定时访问一个静态HTTP服务器,地址如下:<http://jmenv.tbsite.net:8080/rocketmq/nsaddr>,这个URL的返回内容如下:
-```text
-192.168.0.1:9876;192.168.0.2:9876
-```
+ ```text
+ 192.168.0.1:9876;192.168.0.2:9876
+ ```
客户端默认每隔2分钟访问一次这个HTTP服务器,并更新本地的Name
Server地址。URL已经在代码中硬编码,可通过修改/etc/hosts文件来改变要访问的服务器,例如在/etc/hosts增加如下配置:
diff --git
"a/docs/08-\350\264\241\347\214\256\346\214\207\345\215\227/31pull-request.md"
"b/docs/08-\350\264\241\347\214\256\346\214\207\345\215\227/31pull-request.md"
index ef0301af..7b7e2954 100644
---
"a/docs/08-\350\264\241\347\214\256\346\214\207\345\215\227/31pull-request.md"
+++
"b/docs/08-\350\264\241\347\214\256\346\214\207\345\215\227/31pull-request.md"
@@ -35,7 +35,7 @@ https://github.com/cuser/rocketmq.git # cuser's rocketmq
repo[repository] url
② 自行安装 Git 并克隆到本地仓库
```shell
-git clone https://github.com/cuser/rocketmq.git # git clone [repo url]
+$ git clone https://github.com/cuser/rocketmq.git # git clone [repo url]
```
说明:克隆到的本地仓库会以 GitHub 仓库作为远程仓库,并以```origin```命名远程仓库
@@ -43,7 +43,7 @@ git clone https://github.com/cuser/rocketmq.git # git clone
[repo url]
③ 获取开发分支最新代码
```shell
-git rebase origin/develop # git rebase [branch]
+$ git rebase origin/develop # git rebase [branch]
```
说明: [rebase` <branch>`](https://git-scm.com/docs/git-rebase)
基本说法是换基,可通过链接示例了解该步的必要性
@@ -51,9 +51,9 @@ git rebase origin/develop # git rebase [branch]
④ 在本地仓库执行更改
```shell
-git checkout -b RocketMQ-Vxx.0 # git checkout [-b] [new-branch]
-git add /rocketmq/pom.xml # git add [dir/file]
-git commit -a -m "pom" # git commit [-all] [-msg] [message]
+$ git checkout -b RocketMQ-Vxx.0 # git checkout [-b] [new-branch]
+$ git add /rocketmq/pom.xml # git add [dir/file]
+$ git commit -a -m "pom" # git commit [-all] [-msg] [message]
```
说明: 参考[Git](https://git-scm.com/docs/git-add)了解详情,使用相对路径请切换至 ```.git``` 同级目录
@@ -61,7 +61,7 @@ git commit -a -m "pom" # git commit [-all] [-msg]
[message]
⑤ 推送更改到远程仓库
```shell
-git push --set-upstream apache RocketMQ-Vxx.0 # push branch to
https://github.com/cuser/rocketmq-site.git
+$ git push --set-upstream apache RocketMQ-Vxx.0 # push branch to
https://github.com/cuser/rocketmq-site.git
```
## Github 提交 PR
@@ -71,8 +71,8 @@ git push --set-upstream apache RocketMQ-Vxx.0 # push branch
to https://github.co
参照```Git 贡献指南```在本地仓库修改完毕,并将该分支推送到 Github 远程仓库
```shell
-git checkout new-official-website # git checkout -b new-official-website
-git push origin new-official-website # push to
https://github.com/cuser/rocketmq-site.git
+$ git checkout new-official-website # git checkout -b new-official-website
+$ git push origin new-official-website # push to
https://github.com/cuser/rocketmq-site.git
```
① Github 远程仓库切换至开发分支 new-official-website
@@ -114,9 +114,9 @@ head repository / compare : 开发仓库及开发分支
① 合并 contributor PR
```shell
-git checkout develop # switch to local develop branch
-git pull apache develop # fast-forward to current remote HEAD
-git pull --squash https://github.com/cuser/rocketmq.git RocketMQ-Vxx.0 #
merge to branch
+$ git checkout develop # switch to local develop branch
+$ git pull apache develop # fast-forward to current remote HEAD
+$ git pull --squash https://github.com/cuser/rocketmq.git RocketMQ-Vxx.0 #
merge to branch
```
拉取的请求合并分支可能包含多次提交,建议使用 ```--squash``` 指令压缩为一次 commit
@@ -130,9 +130,9 @@ git pull --squash https://github.com/cuser/rocketmq.git
RocketMQ-Vxx.0 # merge
若 committer 合并自己的 PR , 使用 [Git merge]( [Git - git-merge Documentation
(git-scm.com)](https://git-scm.com/docs/git-merge) ) 即可
```shell
-git checkout develop # switch to local develop branch
-git pull apache develop # fast-forward to current remote HEAD
-git merge --squash RocketMQ-Vxx.0 # merge to branch
+$ git checkout develop # switch to local develop branch
+$ git pull apache develop # fast-forward to current remote HEAD
+$ git merge --squash RocketMQ-Vxx.0 # merge to branch
```
③ 进行常规的补丁检查,使用内置的测试用例构建项目,并请务必修改 changelog
@@ -140,7 +140,7 @@ git merge --squash RocketMQ-Vxx.0 # merge to branch
④ 若上述工作均已完成,可以执行下面的指令提交合并,回馈开发者分支状态,并关闭 PR
```shell
-git commit --author="contributor_name <contributor_email>" -a -m
"RocketMQ-Vxx.0 description closes apache/rocketmq#ZZ"
+$ git commit --author="contributor_name <contributor_email>" -a -m
"RocketMQ-Vxx.0 description closes apache/rocketmq#ZZ"
```
关闭 PR 的详情,请参考 [Close
PR](https://docs.github.com/cn/issues/tracking-your-work-with-issues/closing-an-issue)
@@ -148,13 +148,13 @@ git commit --author="contributor_name
<contributor_email>" -a -m "RocketMQ-Vxx.0
⑤ 将合并后的分支推送到 apache/rocketmq 远程仓库
```shell
-git push apache develop
+$ git push apache develop
```
⑥ PR 被提交后,会保留到 GitHub 远程仓库,也可以同步更新个人 GitHub 仓库
```shell
-git push origin develop
+$ git push origin develop
```
关于合并修改的建议:squash 会丢弃开发分支的 commit 信息
@@ -164,8 +164,8 @@ git push origin develop
拒绝 PR :意味着并不执行 pull 或 merge,而仅仅提交拒绝 PR 信息
```SHELL
-git commit --allow-empty -m "RocketMQ-Vxx.0 closes apache/rocketmq#ZZ *Won't
fix*"
-git push apache develop
+$ git commit --allow-empty -m "RocketMQ-Vxx.0 closes apache/rocketmq#ZZ *Won't
fix*"
+$ git push apache develop
```
关闭 Github 上编号 #ZZ 的 PR
@@ -178,4 +178,3 @@ git push apache develop
-