You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
We are always very happy to have contributions, whether for trivial cleanups or big new features.
4
4
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.
5
5
6
-
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.
6
+
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.
@@ -34,15 +34,15 @@ More details of squash can be found at [stackoverflow](https://stackoverflow.com
34
34
35
35
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.
36
36
37
-
Nowadays,we have several important contribution points:
37
+
Nowadays,we have several important contribution points:
38
38
#### Wiki & JavaDoc
39
39
#### RocketMQ SDK(C++\.Net\Php\Python\Go\Node.js)
40
40
#### RocketMQ Connectors
41
41
42
-
##### Prerequisite
43
-
If you want to contribute the above listing points, you must abide our some prerequisites:
42
+
##### Prerequisites
43
+
If you want to contribute to the above listed points, you must abide by the following prerequisites:
44
44
45
-
###### Readability - API must have Javadoc, some very important methods also must have javadoc
46
-
###### Testability - 80% above unit test coverage about main process
47
-
###### Maintainability - Comply with our [checkstyle spec](style/rmq_checkstyle.xml), and at least 3 month update frequency
45
+
###### Readability - API must have Javadoc, and some very important methods must also have Javadoc
46
+
###### Testability - Above 80% unit test coverage for the main process
47
+
###### Maintainability - Comply with our [checkstyle spec](style/rmq_checkstyle.xml), and at least a 3-month update frequency
48
48
###### Deployability - We encourage you to deploy into [maven repository](http://search.maven.org/)
$ cd example && kubectl create -f rocketmq_v1alpha1_rocketmq_cluster.yaml
158
158
159
-
### check whether cluster resources is running
159
+
### check whether cluster resources are running
160
160
$ kubectl get sts
161
161
NAME READY AGE
162
162
broker-0-master 1/1 107m
@@ -182,7 +182,7 @@ name-service 1/1 107m
182
182
*[RocketMQ Dashboard](https://github.com/apache/rocketmq-dashboard): Operation and maintenance console of Apache RocketMQ.
183
183
*[RocketMQ Connect](https://github.com/apache/rocketmq-connect): A tool for scalably and reliably streaming data between Apache RocketMQ and other systems.
184
184
*[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.
185
-
*[RocketMQ EventBridge](https://github.com/apache/rocketmq-eventbridge): EventBridge make it easier to build a event-driven application.
185
+
*[RocketMQ EventBridge](https://github.com/apache/rocketmq-eventbridge): EventBridge makes it easier to build an event-driven application.
186
186
*[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.
187
187
*[RocketMQ Site](https://github.com/apache/rocketmq-site): The repository for Apache RocketMQ website.
188
188
*[RocketMQ E2E](https://github.com/apache/rocketmq-e2e): A project for testing Apache RocketMQ, including end-to-end, performance, compatibility tests.
Copy file name to clipboardExpand all lines: docs/en/Concept.md
+4-5Lines changed: 4 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,17 +18,16 @@ The Name Server serves as the provider of routing service. The producer or the c
18
18
## 7 Pull Consumer
19
19
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.
20
20
## 8 Push Consumer
21
-
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
22
-
push to consumer when new messages arrived.
21
+
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.
23
22
## 9 Producer Group
24
23
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.
25
24
## 10 Consumer Group
26
25
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.
27
26
Warning: consumer instances of one consumer group must have exactly the same topic subscription(s).
28
27
29
-
RocketMQ supports two types of consumption mode:Clustering and Broadcasting.
28
+
RocketMQ supports two types of consumption mode:Clustering and Broadcasting.
30
29
## 11 Consumption Mode - Clustering
31
-
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.
30
+
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.
32
31
## 12 Consumption Mode - Broadcasting
33
32
Under the Broadcasting mode, each consumer instance of the same consumer group receives every message published to the corresponding topic.
34
33
## 13 Normal Ordered Message
@@ -39,4 +38,4 @@ Under the Strictly Ordered Message mode, all messages received by the consumers
39
38
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.
40
39
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.
41
40
## 16 Tag
42
-
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.
41
+
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.
Copy file name to clipboardExpand all lines: docs/en/Deployment.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@
4
4
5
5
### 1 Single Master mode
6
6
7
-
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.
7
+
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.
Copy file name to clipboardExpand all lines: docs/en/Design_LoadBlancing.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@ Load balancing in RocketMQ is accomplished on Client side. Specifically, it can
3
3
4
4
### Producer Load Balancing
5
5
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.
6
-
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.
6
+
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.
7
7
8
8
### Consumer Load Balancing
9
9
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.
Copy file name to clipboardExpand all lines: docs/en/Design_Trancation.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,7 +22,7 @@ The compensation phase is used to resolve the timeout or failure case of the mes
22
22
### 1.2 The design of RocketMQ Transaction Message
23
23
1 Transaction message is invisible to users in first phase(commit-request phase)
24
24
25
-
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.
25
+
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.
26
26
27
27
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:
Copy file name to clipboardExpand all lines: docs/en/FAQ.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ The following questions are frequently asked with regard to the RocketMQ project
8
8
9
9
Please refer to [Why RocketMQ](http://rocketmq.apache.org/docs/motivation)
10
10
11
-
2. Do I have to install other softeware, such as zookeeper, to use RocketMQ?
11
+
2. Do I have to install other software, such as zookeeper, to use RocketMQ?
12
12
13
13
No. RocketMQ can run independently.
14
14
@@ -24,9 +24,9 @@ The following questions are frequently asked with regard to the RocketMQ project
24
24
25
25
### 2. How to reconsume message when consumption fails?
26
26
27
-
 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.
27
+
 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.
28
28
29
-
 2) Broadcast consumption patternThe broadcaset consumption still ensures that a message is consumered at least once, but no resend option is provided.
29
+
 2) Broadcast consumption pattern. The broadcast consumption still ensures that a message is consumed at least once, but no resend option is provided.
30
30
31
31
### 3. How to query the failed message if there is a consumption failure?
Copy file name to clipboardExpand all lines: docs/en/Troubleshoopting.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,7 @@
10
10
11
11
Solution:Execute `export NAMESRV_ADDR=ip:9876` (ip refers to the address of NameServer deployed in the cluster) on the VM that deploys the RocketMQcluster.Then you will execute commands of "mqadmin" successfully.
12
12
13
-
## 2The inconsistent version of RocketMQ between the producer and consumer leads to the problem that message can't be consumed normally.
13
+
## 2The inconsistent version of RocketMQ between the producer and consumer leads to the problem that messages can't be consumed normally.
14
14
15
15
> Problem: The same producer sends a message, consumer A can consume, but consumer B can't consume, and the RocketMQConsole appears:
0 commit comments