alibaba/canal · error · CanalClientException
mq get/ack not support concurrent & async ack
Error message
mq get/ack not support concurrent & async ack
What it means
Error "mq get/ack not support concurrent & async ack" thrown in alibaba/canal.
Source
Thrown at client/src/main/java/com/alibaba/otter/canal/client/pulsarmq/PulsarMQCanalConnector.java:384
return getListWithoutAck();
}
/**
* 获取泛型数据,供其他方法调用
* <p>
* 不支持多线程调用
* </p>
*
* @return java.util.List<T>
* @date 2021/9/14 15:20
* @author chad
* @since 1 by chad at 2021/9/14
* 供{@link PulsarMQCanalConnector#getListWithoutAck(Long, TimeUnit)}
* 和{@link PulsarMQCanalConnector#getFlatListWithoutAck(Long, TimeUnit)}调用
*/
private <T> List<T> getListWithoutAck() {
if (null != this.lastGetBatchMessage) {
throw new CanalClientException("mq get/ack not support concurrent & async ack");
}
List messageList = Lists.newArrayList();
try {
this.lastGetBatchMessage = consumer.batchReceive();
if (null == this.lastGetBatchMessage || this.lastGetBatchMessage.size() < 1) {
this.lastGetBatchMessage = null;
return messageList;
}
} catch (PulsarClientException e) {
logger.error("Receiver Pulsar MQ message error", e);
throw new CanalClientException(e);
}
for (org.apache.pulsar.client.api.Message<byte[]> msgExt : this.lastGetBatchMessage) {
byte[] data = msgExt.getData();
if (data == null) {
logger.warn("Received message data is null");View on GitHub (pinned to 87be50e876)
Solutions
- Do not enable concurrent/async ack mode with the Pulsar MQ connector; call ack(batchId) synchronously after processing each batch.
- Set the consumer to single-threaded get/ack processing or use flatMessage batch handling without async ack.
When it happens
Trigger: Thrown at client/src/main/java/com/alibaba/otter/canal/client/pulsarmq/PulsarMQCanalConnector.java:384 when the library encounters an invalid state.
Common situations: Concurrent async ack on MQ connector. Serialize acks per batch or disable async ack in configuration; the underlying MQ client cannot correlate concurrent acknowledgements.
AI-assisted analysis of alibaba/canal@87be50e876 (2026-08-14).
Data as JSON: /api/errors/983873e569175b54.
Report an issue: GitHub.