From 56e22fbd1818f40c28d7cfe0ea7913c8ca76a242 Mon Sep 17 00:00:00 2001 From: Sebastien Dionne Date: Mon, 6 Oct 2025 07:06:33 -0400 Subject: [PATCH] Fix typos and linguistic errors in documentation Signed-off-by: Sebastien Dionne --- CONTRIBUTING.md | 14 +++++++------- README.md | 12 ++++++------ distribution/bin/README.md | 4 ++-- docs/en/Concept.md | 9 ++++----- docs/en/Configuration_TLS.md | 8 ++++---- docs/en/Deployment.md | 2 +- docs/en/Design_LoadBlancing.md | 2 +- docs/en/Design_Trancation.md | 2 +- docs/en/FAQ.md | 6 +++--- docs/en/Troubleshoopting.md | 2 +- docs/en/architecture.md | 2 +- docs/en/best_practice.md | 14 +++++++------- tieredstore/README.md | 10 +++++----- 13 files changed, 43 insertions(+), 44 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0458764bc26..2a05422efeb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,7 +3,7 @@ We are always very happy to have contributions, whether for trivial cleanups or big new features. We want to have high quality, well documented codes for each programming language, as well as the surrounding [ecosystem](https://github.com/apache/rocketmq-externals) of integration tools that people use with RocketMQ. -Nor is code the only way to contribute to the project. We strongly value documentation, integration with other project, and gladly accept improvements for these aspects. +Nor is code the only way to contribute to the project. We strongly value documentation, integration with other projects, and gladly accept improvements for these aspects. Recommend reading: * [Contributors Tech Guide](http://www.apache.org/dev/contributors) @@ -34,15 +34,15 @@ More details of squash can be found at [stackoverflow](https://stackoverflow.com We are always interested in adding new contributors. What we look for are series of contributions, good taste and ongoing interest in the project. If you are interested in becoming a committer, please let one of the existing committers know and they can help you walk through the process. -Nowadays,we have several important contribution points: +Nowadays, we have several important contribution points: #### Wiki & JavaDoc #### RocketMQ SDK(C++\.Net\Php\Python\Go\Node.js) #### RocketMQ Connectors -##### Prerequisite -If you want to contribute the above listing points, you must abide our some prerequisites: +##### Prerequisites +If you want to contribute to the above listed points, you must abide by the following prerequisites: -###### Readability - API must have Javadoc, some very important methods also must have javadoc -###### Testability - 80% above unit test coverage about main process -###### Maintainability - Comply with our [checkstyle spec](style/rmq_checkstyle.xml), and at least 3 month update frequency +###### Readability - API must have Javadoc, and some very important methods must also have Javadoc +###### Testability - Above 80% unit test coverage for the main process +###### Maintainability - Comply with our [checkstyle spec](style/rmq_checkstyle.xml), and at least a 3-month update frequency ###### Deployability - We encourage you to deploy into [maven repository](http://search.maven.org/) diff --git a/README.md b/README.md index 322058fed26..765f1eb2a6f 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,8 @@ It offers a variety of features: * Messaging patterns including publish/subscribe, request/reply and streaming * Financial grade transactional message -* Built-in fault tolerance and high availability configuration options base on [DLedger Controller](docs/en/controller/quick_start.md) -* Built-in message tracing capability, also support opentracing +* Built-in fault tolerance and high availability configuration options based on [DLedger Controller](docs/en/controller/quick_start.md) +* Built-in message tracing capability, also supports opentracing * Versatile big-data and streaming ecosystem integration * Message retroactivity by time or offset * Reliable FIFO and strict ordered messaging in the same queue @@ -80,7 +80,7 @@ $ tail -f ~/logs/rocketmqlogs/namesrv.log The Name Server boot success... ``` -For Windows users, you need set environment variables first: +For Windows users, you need to set environment variables first: - From the desktop, right click the Computer icon. - Choose Properties from the context menu. - Click the Advanced system settings link. @@ -139,7 +139,7 @@ Before your operations, make sure that `kubectl` and related kubeconfig file ins $ git clone https://github.com/apache/rocketmq-operator $ cd rocketmq-operator && make deploy -### check whether CRDs is successfully installed +### check whether CRDs are successfully installed $ kubectl get crd | grep rocketmq.apache.org brokers.rocketmq.apache.org 2022-05-12T09:23:18Z consoles.rocketmq.apache.org 2022-05-12T09:23:19Z @@ -156,7 +156,7 @@ rocketmq-operator-6f65c77c49-8hwmj 1/1 Running 0 93s ### create RocketMQ cluster resource $ cd example && kubectl create -f rocketmq_v1alpha1_rocketmq_cluster.yaml -### check whether cluster resources is running +### check whether cluster resources are running $ kubectl get sts NAME READY AGE broker-0-master 1/1 107m @@ -182,7 +182,7 @@ name-service 1/1 107m * [RocketMQ Dashboard](https://github.com/apache/rocketmq-dashboard): Operation and maintenance console of Apache RocketMQ. * [RocketMQ Connect](https://github.com/apache/rocketmq-connect): A tool for scalably and reliably streaming data between Apache RocketMQ and other systems. * [RocketMQ MQTT](https://github.com/apache/rocketmq-mqtt): A new MQTT protocol architecture model, based on which Apache RocketMQ can better support messages from terminals such as IoT devices and Mobile APP. -* [RocketMQ EventBridge](https://github.com/apache/rocketmq-eventbridge): EventBridge make it easier to build a event-driven application. +* [RocketMQ EventBridge](https://github.com/apache/rocketmq-eventbridge): EventBridge makes it easier to build an event-driven application. * [RocketMQ Incubating Community Projects](https://github.com/apache/rocketmq-externals): Incubator community projects of Apache RocketMQ, including [logappender](https://github.com/apache/rocketmq-externals/tree/master/logappender), [rocketmq-ansible](https://github.com/apache/rocketmq-externals/tree/master/rocketmq-ansible), [rocketmq-beats-integration](https://github.com/apache/rocketmq-externals/tree/master/rocketmq-beats-integration), [rocketmq-cloudevents-binding](https://github.com/apache/rocketmq-externals/tree/master/rocketmq-cloudevents-binding), etc. * [RocketMQ Site](https://github.com/apache/rocketmq-site): The repository for Apache RocketMQ website. * [RocketMQ E2E](https://github.com/apache/rocketmq-e2e): A project for testing Apache RocketMQ, including end-to-end, performance, compatibility tests. diff --git a/distribution/bin/README.md b/distribution/bin/README.md index efbb67d9f4b..ab702cfd3b9 100644 --- a/distribution/bin/README.md +++ b/distribution/bin/README.md @@ -1,9 +1,9 @@ ### Operating system tuning -Before deploying broker servers, it's highly recommended to run **os.sh**, which is to optimize your operating system for better performance. +Before deploying broker servers, it is highly recommended to run **os.sh**, which optimizes your operating system for better performance. ## Notice ### os.sh should be executed only once with root permission. -### os.sh parameter settings are for reference purpose only. You can tune them according to your target host configurations. +### os.sh parameter settings are for reference purposes only. You can tune them according to your target host configurations. ### Start broker diff --git a/docs/en/Concept.md b/docs/en/Concept.md index 03f23842934..670fbc37248 100644 --- a/docs/en/Concept.md +++ b/docs/en/Concept.md @@ -18,17 +18,16 @@ The Name Server serves as the provider of routing service. The producer or the c ## 7 Pull Consumer A type of Consumer, the application pulls messages from brokers by actively invoking the consumer pull message method, and the application has the advantages of controlling the timing and frequency of pulling messages. Once the batch of messages is pulled, user application will initiate consuming process. ## 8 Push Consumer -A type of Consumer, the application do not invoke the consumer pull message method to pull messages, instead the client invoke pull message method itself. At the user level it seems like brokers -push to consumer when new messages arrived. +A type of Consumer, the application does not invoke the consumer pull message method to pull messages, instead the client invokes the pull message method itself. At the user level it seems like brokers push to the consumer when new messages arrive. ## 9 Producer Group A collection of the same type of Producer, which sends the same type of messages with consistent logic. If a transaction message is sent and the original producer crashes after sending, the broker server will contact other producers in the same producer group to commit or rollback the transactional message. ## 10 Consumer Group A collection of the same type of Consumer, which consume the same type of messages with consistent logic. The consumer group makes load-balance and fault-tolerance super easy in terms of message consuming. Warning: consumer instances of one consumer group must have exactly the same topic subscription(s). -RocketMQ supports two types of consumption mode:Clustering and Broadcasting. +RocketMQ supports two types of consumption mode: Clustering and Broadcasting. ## 11 Consumption Mode - Clustering -Under the Clustering mode, all the messages from one topic will be delivered to all the consumers instances averagely as much as possible. That is, one message can be consumed by only one consumer instance. +Under the Clustering mode, all the messages from one topic will be delivered to all the consumer instances as evenly as possible. That is, one message can be consumed by only one consumer instance. ## 12 Consumption Mode - Broadcasting Under the Broadcasting mode, each consumer instance of the same consumer group receives every message published to the corresponding topic. ## 13 Normal Ordered Message @@ -39,4 +38,4 @@ Under the Strictly Ordered Message mode, all messages received by the consumers The physical carrier of information transmitted by a messaging system, the smallest unit of production and consumption data, each message must belong to one topic. Each Message in RocketMQ has a unique message id and can carry a key used to store business-related value. The system has the function to query messages by its id or key. ## 16 Tag -Flags set for messages to distinguish different types of messages under the same topic, functioning as a "sub-topic". Messages from the same business unit can set different tags under the same topic in terms of different business purposes. The tag can effectively maintain the clarity and consistency of the code and optimize the query system provided by RocketMQ. The consumer can realize different "sub-topic" by using tag in order to achieve better expandability. +Flags set for messages to distinguish different types of messages under the same topic, functioning as a "sub-topic". Messages from the same business unit can set different tags under the same topic for different business purposes. The tag can effectively maintain the clarity and consistency of the code and optimize the query system provided by RocketMQ. The consumer can realize different "sub-topics" by using tags in order to achieve better extensibility. diff --git a/docs/en/Configuration_TLS.md b/docs/en/Configuration_TLS.md index 445d186d27c..f9716f92f52 100644 --- a/docs/en/Configuration_TLS.md +++ b/docs/en/Configuration_TLS.md @@ -1,8 +1,8 @@ # TLS Configuration -This section introduce TLS configuration in RocketMQ. +This section introduces TLS configuration in RocketMQ. -## 1 Generate Certification Files -User can generate certification files using OpenSSL. Suggested to generate files in Linux. +## 1 Generate Certificate Files +Users can generate certificate files using OpenSSL. It is suggested to generate files in Linux. ### 1.1 Generate ca.pem ```shell @@ -107,7 +107,7 @@ Add following parameters in JVM. The value of "tls.config.file" needs to be repl -Dtls.client.authServer=true -Dtls.enable=true -Dtls.test.mode.enable=false -Dtls.config.file=/opt/certs/tlsclient.properties ``` -Enable TLS for client linke following: +Enable TLS for client like the following: ```Java public class ExampleProducer { public static void main(String[] args) throws Exception { diff --git a/docs/en/Deployment.md b/docs/en/Deployment.md index 8f5c8f1e388..47a1b0587db 100644 --- a/docs/en/Deployment.md +++ b/docs/en/Deployment.md @@ -4,7 +4,7 @@ ### 1 Single Master mode -This is the simplest, but also the riskiest mode, that makes the entire service unavailable once the broker restarts or goes down. Production environments are not recommended, but can be used for local testing and development. Here are the steps to build. +This is the simplest, but also the riskiest mode, that makes the entire service unavailable once the broker restarts or goes down. Production environments are not recommended, but it can be used for local testing and development. Here are the steps to build. **1)Start NameServer** diff --git a/docs/en/Design_LoadBlancing.md b/docs/en/Design_LoadBlancing.md index 86c47b16536..05c178464dc 100644 --- a/docs/en/Design_LoadBlancing.md +++ b/docs/en/Design_LoadBlancing.md @@ -3,7 +3,7 @@ Load balancing in RocketMQ is accomplished on Client side. Specifically, it can ### Producer Load Balancing When the Producer sends a message, it will first find the specified TopicPublishInfo according to Topic. After getting the routing information of TopicPublishInfo, the RocketMQ client will select a queue (MessageQueue) from the messageQueue List in TopicPublishInfo to send the message by default.Specific fault-tolerant strategies are defined in the MQFaultStrategy class. -Here is a sendLatencyFaultEnable switch variable, which, if turned on, filters out the Broker agent of not available on the basis of randomly gradually increasing modular arithmetic selection. The so-called "latencyFault Tolerance" refers to a certain period of time to avoid previous failures. For example, if the latency of the last request exceeds 550 Lms, it will evade 30000 Lms; if it exceeds 1000L, it will evade 60000L; if it is closed, it will choose a queue (MessageQueue) to send messages by randomly gradually increasing modular arithmetic, and the latencyFault Tolerance mechanism is the key to achieve high availability of message sending. +Here is a sendLatencyFaultEnable switch variable, which, if turned on, filters out the Broker agents that are not available on the basis of randomly gradually increasing modular arithmetic selection. The so-called "latencyFault Tolerance" refers to a certain period of time to avoid previous failures. For example, if the latency of the last request exceeds 550 Lms, it will evade 30000 Lms; if it exceeds 1000L, it will evade 60000L; if it is closed, it will choose a queue (MessageQueue) to send messages by randomly gradually increasing modular arithmetic, and the latencyFault Tolerance mechanism is the key to achieve high availability of message sending. ### Consumer Load Balancing In RocketMQ, the two consumption modes (Push/Pull) on the Consumer side are both based on the pull mode to get the message, while in the Push mode it is only a kind of encapsulation of the pull mode, which is essentially implemented as the message pulling thread after pulling a batch of messages from the server. After submitting to the message consuming thread pool, it continues to try again to pull the message to the server. If the message is not pulled, the pull is delayed and continues. In both pull mode based consumption patterns (Push/Pull), the Consumer needs to know which message queue - queue from the Broker side to get the message. Therefore, it is necessary to do load balancing on the Consumer side, that is, which Consumer consumption is allocated to the same ConsumerGroup by more than one MessageQueue on the Broker side. diff --git a/docs/en/Design_Trancation.md b/docs/en/Design_Trancation.md index 930697b7241..287378e37a6 100644 --- a/docs/en/Design_Trancation.md +++ b/docs/en/Design_Trancation.md @@ -22,7 +22,7 @@ The compensation phase is used to resolve the timeout or failure case of the mes ### 1.2 The design of RocketMQ Transaction Message 1 Transaction message is invisible to users in first phase(commit-request phase) - Upon on the main process of transaction message, the message of first phase is invisible to the user. This is also the biggest difference from normal message. So how do we write the message while making it invisible to the user? And below is the solution of RocketMQ: if the message is a Half message, the topic and queueId of the original message will be backed up, and then changes the topic to RMQ_SYS_TRANS_HALF_TOPIC. Since the consumer group does not subscribe to the topic, the consumer cannot consume the Half message. Then RocketMQ starts a timing task, pulls the message for RMQ_SYS_TRANS_HALF_TOPIC, obtains a channel according to producer group and sends a back-check to query local transaction status, and decide whether to submit or roll back the message according to the status. + In the main process of transaction message, the message of first phase is invisible to the user. This is also the biggest difference from normal message. So how do we write the message while making it invisible to the user? And below is the solution of RocketMQ: if the message is a Half message, the topic and queueId of the original message will be backed up, and then changes the topic to RMQ_SYS_TRANS_HALF_TOPIC. Since the consumer group does not subscribe to the topic, the consumer cannot consume the Half message. Then RocketMQ starts a timing task, pulls the message for RMQ_SYS_TRANS_HALF_TOPIC, obtains a channel according to producer group and sends a back-check to query local transaction status, and decide whether to submit or roll back the message according to the status. In RocketMQ, the storage structure of the message in the broker is as follows. Each message has corresponding index information. The Consumer reads the content of the message through the secondary index of the ConsumeQueue. The flow is as follows: diff --git a/docs/en/FAQ.md b/docs/en/FAQ.md index dac53ecbfd4..78c84fca20a 100644 --- a/docs/en/FAQ.md +++ b/docs/en/FAQ.md @@ -8,7 +8,7 @@ The following questions are frequently asked with regard to the RocketMQ project Please refer to [Why RocketMQ](http://rocketmq.apache.org/docs/motivation) -2. Do I have to install other softeware, such as zookeeper, to use RocketMQ? +2. Do I have to install other software, such as zookeeper, to use RocketMQ? No. RocketMQ can run independently. @@ -24,9 +24,9 @@ The following questions are frequently asked with regard to the RocketMQ project ### 2. How to reconsume message when consumption fails? - 1) Cluster consumption pattern, The consumer business logic code returns Action.ReconsumerLater, NULL, or throws an exception, if a message failed to be consumed, it will retry for up to 16 times, after that, the message would be descarded. + 1) Cluster consumption pattern, The consumer business logic code returns Action.ReconsumerLater, NULL, or throws an exception, if a message failed to be consumed, it will retry for up to 16 times, after that, the message would be discarded. - 2) Broadcast consumption patternThe broadcaset consumption still ensures that a message is consumered at least once, but no resend option is provided. + 2) Broadcast consumption pattern. The broadcast consumption still ensures that a message is consumed at least once, but no resend option is provided. ### 3. How to query the failed message if there is a consumption failure? diff --git a/docs/en/Troubleshoopting.md b/docs/en/Troubleshoopting.md index ee4adab8cfb..505fde54da6 100644 --- a/docs/en/Troubleshoopting.md +++ b/docs/en/Troubleshoopting.md @@ -10,7 +10,7 @@ Solution: Execute `export NAMESRV_ADDR=ip:9876` (ip refers to the address of NameServer deployed in the cluster) on the VM that deploys the RocketMQ cluster.Then you will execute commands of "mqadmin" successfully. -## 2 The inconsistent version of RocketMQ between the producer and consumer leads to the problem that message can't be consumed normally. +## 2 The inconsistent version of RocketMQ between the producer and consumer leads to the problem that messages can't be consumed normally. > Problem: The same producer sends a message, consumer A can consume, but consumer B can't consume, and the RocketMQ Console appears: > diff --git a/docs/en/architecture.md b/docs/en/architecture.md index 863a62200a2..47cce84c2bb 100644 --- a/docs/en/architecture.md +++ b/docs/en/architecture.md @@ -31,7 +31,7 @@ The RocketMQ architecture is divided into four parts, as shown in the figure abo - NameServer is an almost stateless node that can be deployed in a cluster without any information synchronization between nodes. -- The broker deployment is relatively complex. The Broker is divided into the Master and the Slave. One Master can correspond to multiple Slaves. However, one Slave can only correspond to one Master. The correspondence between the Master and the Slave is defined by specifying the same BrokerName and different BrokerId. The BrokerId is 0. Indicates Master, non-zero means Slave. The Master can also deploy multiple. Each broker establishes a long connection with all nodes in the NameServer cluster, and periodically registers Topic information to all NameServers. Note: The current RocketMQ version supports a Master Multi Slave on the deployment architecture, but only the slave server with BrokerId=1 will participate in the read load of the message. +- The broker deployment is relatively complex. The Broker is divided into the Master and the Slave. One Master can correspond to multiple Slaves. However, one Slave can only correspond to one Master. The correspondence between the Master and the Slave is defined by specifying the same BrokerName and different BrokerId. The BrokerId 0 indicates Master, non-zero means Slave. The Master can also deploy multiple. Each broker establishes a long connection with all nodes in the NameServer cluster, and periodically registers Topic information to all NameServers. Note: The current RocketMQ version supports a Master Multi Slave on the deployment architecture, but only the slave server with BrokerId=1 will participate in the read load of the message. - The Producer establishes a long connection with one of the nodes in the NameServer cluster (randomly selected), periodically obtains Topic routing information from the NameServer, and establishes a long connection to the Master that provides the Topic service, and periodically sends a heartbeat to the Master. Producer is completely stateless and can be deployed in a cluster. diff --git a/docs/en/best_practice.md b/docs/en/best_practice.md index da279e297ed..5e3b8537741 100755 --- a/docs/en/best_practice.md +++ b/docs/en/best_practice.md @@ -4,8 +4,8 @@ ### 1.1 Attention of send message #### 1 Uses of tags -An application should use one topic as far as possible, but identify the message's subtype with tags.Tags can be set freely by the application. -Only when producers set tags while sending messages, can consumers to filter messages through broker with tags when subscribing messages: message.setTags("TagA"). +An application should use one topic as far as possible, but identify the message's subtype with tags. Tags can be set freely by the application. +Only when producers set tags while sending messages, can consumers filter messages through broker with tags when subscribing messages: message.setTags("TagA"). #### 2 Uses of keys The unique identifier for each message at the business level set to the Keys field to help locate message loss problems in the future. @@ -37,23 +37,23 @@ Each state is describing below: - **SEND_OK** -Message send successfully.Note that even though message send successfully, but it doesn't mean than it is reliable. +Message send successfully. Note that even though message send successfully, it doesn't mean that it is reliable. To make sure nothing lost, you should also enable the SYNC_MASTER or SYNC_FLUSH. - **FLUSH_DISK_TIMEOUT** -Message send successfully, but the server flush messages to disk timeout.At this point, the message has entered the server's memory, and the message will be lost only when the server is down. +Message send successfully, but the server flush messages to disk timeout. At this point, the message has entered the server's memory, and the message will be lost only when the server is down. Flush mode and sync flush time interval can be set in the configuration parameters. It will return FLUSH_DISK_TIMEOUT when Broker server doesn't finish flush message to disk in timeout(default is 5s ) when sets FlushDiskType=SYNC_FLUSH(default is async flush). - **FLUSH_SLAVE_TIMEOUT** -Message send successfully, but sync to slave timeout.At this point, the message has entered the server's memory, and the message will be lost only when the server is down. +Message send successfully, but sync to slave timeout. At this point, the message has entered the server's memory, and the message will be lost only when the server is down. It will return FLUSH_SLAVE_TIMEOUT when Broker server role is SYNC_MASTER(default is ASYNC_MASTER),and it doesn't sync message to slave successfully in the timeout(default 5s). - **SLAVE_NOT_AVAILABLE** -Message send successfully, but slave is not available.It will return SLAVE_NOT_AVAILABLE when Broker role is SYNC_MASTER(default is ASYNC_MASTER), and it doesn't have a slave server available. +Message send successfully, but slave is not available. It will return SLAVE_NOT_AVAILABLE when Broker role is SYNC_MASTER(default is ASYNC_MASTER), and it doesn't have a slave server available. ### 1.2 Handling of message send failure Send method of producer itself supports internal retry. The logic of retry is as follows: @@ -77,7 +77,7 @@ Typically, this is the process by which messages are sent: - Client send request to server - Server process request - Server response to client -So, the time taken to send a message is the sum of the three steps above.Some scenarios require very little time, but not much reliability, such as log collect application. +So, the time taken to send a message is the sum of the three steps above. Some scenarios require very little time, but not much reliability, such as log collect application. This type application can use oneway to send messages. Oneway only send request without waiting for a reply, and send a request at the client implementation level is simply the overhead of an operating system call that writes data to the client's socket buffer, this process that typically takes microseconds. diff --git a/tieredstore/README.md b/tieredstore/README.md index 41e7458a2a6..6b5ecc8c8d4 100644 --- a/tieredstore/README.md +++ b/tieredstore/README.md @@ -13,7 +13,7 @@ This article is a cookbook for RocketMQ tiered storage. Use the following steps to easily use tiered storage 1. Change `messageStorePlugIn` to `org.apache.rocketmq.tieredstore.TieredMessageStore` in your `broker.conf`. -2. Configure your backend service provider. change `tieredBackendServiceProvider` to your storage medium implement. We give a default implement: POSIX provider, and you need to change `tieredStoreFilePath` to the mount point of storage medium for tiered storage. +2. Configure your backend service provider. Change `tieredBackendServiceProvider` to your storage medium implementation. We provide a default implementation: POSIX provider, and you need to change `tieredStoreFilePath` to the mount point of the storage medium for tiered storage. 3. Start the broker and enjoy! ## Configuration @@ -21,16 +21,16 @@ Use the following steps to easily use tiered storage The following are some core configurations, for more details, see [TieredMessageStoreConfig](https://github.com/apache/rocketmq/blob/develop/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/common/TieredMessageStoreConfig.java) | Configuration | Default value | Unit | Function | -| ------------------------------- |---------------------------------------------------------------| ----------- | ------------------------------------------------------------------------------- | +| ------------------------------- |---------------------------------------------------------------| ----------- |---------------------------------------------------------------------------------| | messageStorePlugIn | | | Set to org.apache.rocketmq.tieredstore.TieredMessageStore to use tiered storage | | tieredMetadataServiceProvider | org.apache.rocketmq.tieredstore.metadata.DefaultMetadataStore | | Select your metadata provider | | tieredBackendServiceProvider | org.apache.rocketmq.tieredstore.provider.PosixFileSegment | | Select your backend service provider | -| tieredStoreFilePath | | | Select the directory using for tiered storage, only for POSIX provider. | +| tieredStoreFilePath | | | Select the directory used for tiered storage, only for POSIX provider. | | tieredStorageLevel | NOT_IN_DISK | | The options are DISABLE, NOT_IN_DISK, NOT_IN_MEM, FORCE | | tieredStoreFileReservedTime | 72 | hour | Default topic TTL in tiered storage | | tieredStoreGroupCommitCount | 2500 | | The number of messages that trigger one batch transfer | | tieredStoreGroupCommitSize | 33554432 | byte | The size of messages that trigger one batch transfer, 32M by default | -| tieredStoreMaxGroupCommitCount | 10000 | | The maximum number of messages waiting to be transfered per queue | +| tieredStoreMaxGroupCommitCount | 10000 | | The maximum number of messages waiting to be transferred per queue | | readAheadCacheExpireDuration | 1000 | millisecond | Read-ahead cache expiration time | | readAheadCacheSizeThresholdRate | 0.3 | | The maximum heap space occupied by the read-ahead cache | @@ -61,4 +61,4 @@ We need community participation to add more backend service providers for tiered 1. Extend [FileSegment](https://github.com/apache/rocketmq/blob/develop/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/provider/FileSegment.java) and implement the methods of [FileSegmentProvider](https://github.com/apache/rocketmq/blob/develop/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/provider/FileSegmentProvider.java) interface. 2. Record metrics where appropriate. See `rocketmq_tiered_store_provider_rpc_latency`, `rocketmq_tiered_store_provider_upload_bytes`, and `rocketmq_tiered_store_provider_download_bytes` -3. No need to maintain your own cache and avoid polluting the page cache. It is already having the read-ahead cache. +3. No need to maintain your own cache and avoid polluting the page cache. It already has the read-ahead cache.