Configure estos parámetros al usar la Community Edition del SDK de Java para conectarse a ApsaraMQ for RocketMQ. Los parámetros se dividen en tres grupos: conexión, productor y consumidor.
Parámetros de conexión
Establezca estos parámetros en cada cliente productor y consumidor.
|
Parámetro |
Descripción |
Valor predeterminado |
|
|
Endpoint TCP de su instancia de ApsaraMQ for RocketMQ. Obtenga este valor en la página Instance Details de la consola de ApsaraMQ for RocketMQ. |
Ninguna (obligatorio) |
|
|
AccessKey ID para autenticación. Consulte Create an AccessKey pair. |
Ninguna (obligatorio) |
|
|
AccessKey secret para autenticación. Consulte Create an AccessKey pair. |
Ninguna (obligatorio) |
|
|
Establézcalo en |
Ninguna |
Todos los clientes requieren NAMESRV_ADDR, AccessKey y SecretKey. Para ver el procedimiento completo de configuración, consulte Prepare the environment.
Parámetros del productor
|
Parámetro |
Descripción |
Valor predeterminado |
Valores válidos |
|
|
ID del grupo de productores. Los productores de una misma aplicación que envían los mismos mensajes pertenecen al mismo grupo. Obtenga el ID del grupo en la consola de ApsaraMQ for RocketMQ. Consulte Terms. |
Ninguna (obligatorio) |
-- |
|
|
Tiempo de espera para enviar un mensaje, en milisegundos. |
-- |
-- |
|
|
Umbral de tamaño del cuerpo del mensaje para compresión automática, en KB. Los mensajes que superan este valor se comprimen antes del envío y se descomprimen en el lado del consumidor. |
4 KB |
-- |
|
|
Número máximo de reintentos para envíos síncronos con errores. No aplica a envíos asíncronos. |
-- |
-- |
|
|
Tamaño máximo de mensaje permitido por el cliente, en MB. Los mensajes que exceden este límite generan un error. El broker también aplica su propio límite de tamaño; configure los parámetros del cliente y del broker de forma conjunta. |
4 MB |
-- |
Ejemplo: configurar un productor
DefaultMQProducer producer = new DefaultMQProducer("<your-producer-group-id>");
producer.setNamesrvAddr("<your-tcp-endpoint>");
// Timeout and retry
producer.setSendMsgTimeout(3000); // 3 seconds
producer.setRetryTimesWhenSendFailed(3); // Retry up to 3 times (synchronous sends only)
// Compression and size limits
producer.setCompressMsgBodyOverHowmuch(4096); // Compress messages over 4 KB
producer.setMaxMessageSize(4 * 1024 * 1024); // 4 MB max message size
producer.start();
retryTimesWhenSendFailed solo aplica a envíos síncronos.
Parámetros del consumidor
Offset y pool de hilos
|
Parámetro |
Descripción |
Valor predeterminado |
Valores válidos |
|
|
ID del grupo de consumidores. Los consumidores de una misma aplicación que se suscriben a los mismos mensajes y usan la misma lógica de consumo pertenecen al mismo grupo. Obtenga el ID del grupo en la consola de ApsaraMQ for RocketMQ. Consulte Terms. |
Ninguna (obligatorio) |
-- |
|
|
Offset inicial cuando se inicia un nuevo grupo de consumidores. |
Último offset |
-- |
|
|
Número mínimo de hilos en el pool de hilos del consumidor. |
20 |
-- |
|
|
Número máximo de hilos en el pool de hilos del consumidor. Debe ser igual a |
20 |
-- |
Control de flujo y reintentos
|
Parámetro |
Descripción |
Valor predeterminado |
Valores válidos |
|
|
Intervalo máximo de offset para consumo concurrente en una sola cola. |
2000 |
1–65535 |
|
|
Número máximo de mensajes almacenados en caché localmente por cola. |
1000 |
1–65535 |
|
|
Tamaño total máximo de mensajes almacenados en caché localmente por cola, en MB. |
100 MB |
1–1024 |
|
|
Número máximo de intentos de reprocesamiento para un mensaje con errores. |
16 |
-- |
|
|
Intervalo mínimo entre reintentos consecutivos de mensajes ordenados, en milisegundos. |
1000 ms |
10–30000 |
Ejemplo: configurar un consumidor push
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("<your-consumer-group-id>");
consumer.setNamesrvAddr("<your-tcp-endpoint>");
// Start consuming from the latest offset
consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET);
// Thread pool: min and max must match
consumer.setConsumeThreadMin(20);
consumer.setConsumeThreadMax(20);
// Flow control
consumer.setConsumeConcurrentlyMaxSpan(2000);
consumer.setPullThresholdForQueue(1000);
consumer.setPullThresholdSizeForQueue(100); // 100 MB per queue
// Retry
consumer.setMaxReconsumeTimes(16);
consumer.subscribe("<your-topic>", "*");
consumer.registerMessageListener((msgs, context) -> {
// Process messages
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
});
consumer.start();
consumeThreadMinyconsumeThreadMaxdeben tener el mismo valor.