blob: af83ffcb400b364585285534cdbf8afbaf10948d [file] [view]
## Client Configuration
Relative to RocketMQ's Broker cluster, producers and consumers are clients. This section describes the common behavior configuration of producers and consumers, including updates for **RocketMQ 5.x**.
### 1 Client Addressing Mode
`RocketMQ` allows clients to locate the `Name Server`, which then helps them find the `Broker`. Below are various configurations, prioritized from highest to lowest. Higher priority configurations override lower ones.
- Specified `Name Server` address in the code (multiple addresses separated by semicolons):
```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");
```
- Specified `Name Server` address in Java setup parameters:
```text
-Drocketmq.namesrv.addr=192.168.0.1:9876;192.168.0.2:9876
```
- Specified `Name Server` address in environment variables:
```text
export NAMESRV_ADDR=192.168.0.1:9876;192.168.0.2:9876
```
- HTTP static server addressing (default):
Clients retrieve `Name Server` addresses from a static HTTP server:
```text
http://jmenv.tbsite.net:8080/rocketmq/nsaddr
```
- **New in RocketMQ 5.x:**
- Improved service discovery mechanism, allowing dynamic Name Server registration.
- Introduces `VIP_CHANNEL_ENABLED` for better failover:
```java
producer.setVipChannelEnabled(false);
consumer.setVipChannelEnabled(false);
```
### 2 Client Configuration
`DefaultMQProducer`, `TransactionMQProducer`, `DefaultMQPushConsumer`, and `DefaultMQPullConsumer` all extend the `ClientConfig` class, which provides common client configurations.
#### 2.1 Client Common Configuration
| Parameter Name | Default Value | Description |
|-------------------------------|---------------|--------------|
| namesrvAddr | | Name Server address list (semicolon-separated) |
| clientIP | Local IP | Client's local IP address (useful if automatic detection fails) |
| instanceName | DEFAULT | Unique name for the client instance |
| clientCallbackExecutorThreads | 4 | Number of communication layer asynchronous callback threads |
| pollNameServerInterval | 30000 | Interval (ms) to poll Name Server |
| heartbeatBrokerInterval | 30000 | Interval (ms) for sending heartbeats to Broker |
| persistConsumerOffsetInterval | 5000 | Interval (ms) for persisting consumer offsets |
| **autoUpdateNameServer** (5.x) | true | Automatically update Name Server addresses from registry |
| **instanceId** (5.x) | | Unique identifier for each client instance |
#### 2.2 Producer Configuration
| Parameter Name | Default Value | Description |
|--------------------------------|----------------------|--------------|
| producerGroup | DEFAULT_PRODUCER | Producer group name |
| sendMsgTimeout | 3000 | Timeout (ms) for sending messages |
| retryTimesWhenSendFailed | 2 | Max retries for failed messages |
| **enableBatchSend** (5.x) | true | Enables batch message sending |
| **enableBackPressure** (5.x) | true | Prevents overload in high-traffic scenarios |
#### 2.3 PushConsumer Configuration
| Parameter Name | Default Value | Description |
|--------------------------------------|------------------------------------|-------------|
| consumerGroup | DEFAULT_CONSUMER | Consumer group name |
| messageModel | CLUSTERING | Message consumption mode (CLUSTERING or BROADCAST) |
| consumeFromWhere | CONSUME_FROM_LAST_OFFSET | Default consumption position |
| consumeThreadMin | 20 | Min consumption thread count |
| consumeThreadMax | 20 | Max consumption thread count |
| **Rebalance Strategies (5.x)** | AllocateMessageQueueAveragelyByCircle | New rebalance strategy for better distribution |
#### 2.4 PullConsumer Configuration
| Parameter Name | Default Value | Description |
|------------------------------------|------------------------------|-------------|
| consumerGroup | DEFAULT_CONSUMER | Consumer group name |
| brokerSuspendMaxTimeMillis | 20000 | Max suspension time (ms) for long polling |
| consumerPullTimeoutMillis | 10000 | Timeout (ms) for pull requests |
| **messageGroup** (5.x) | | Enables orderly consumption based on groups |
#### 2.5 Message Data Structure
| Field Name | Default Value | Description |
|-------------------|---------------|-------------|
| Topic | null | Required: Name of the message topic |
| Body | null | Required: Message content |
| Tags | null | Optional: Tag for filtering |
| Keys | null | Optional: Business keys (e.g., order IDs) |
| Flag | 0 | Optional: Custom flag |
| DelayTimeLevel | 0 | Optional: Message delay level |
| WaitStoreMsgOK | TRUE | Optional: Acknowledgment before storing |
| **maxReconsumeTimes** (5.x) | | Max retries before moving to dead-letter queue |
| **messageGroup** (5.x) | | Group-based message ordering |
---