无法为ClickHouse RabbitMQ引擎表设置ACK,需消费后删除消息
ClickHouse RabbitMQ引擎自动ACK消息的说明
语法错误修正
你的建表SQL存在语法错误,最后一行的rabbitmq_format = 'JSONEachRow"末尾引号转义错误,修正后的语句如下:
create table MyTable(id Int64) engine = RabbitMQ SETTINGS rabbitmq_host_port = 'localhost:5672', rabbitmq_exchange_name ='exchange', rabbitmq_exchange_type = 'direct', rabbitmq_routing_key_list = 'serv', rabbitmq_username = 'user', rabbitmq_password = 'password', rabbitmq_format = 'JSONEachRow'
自动ACK机制说明
ClickHouse的RabbitMQ引擎默认会在成功将消息写入表后自动发送ACK,触发RabbitMQ服务器删除该消息,不需要额外配置ACK相关参数。
消息未被删除的排查方向
如果出现消息消费后未被删除的情况,可从以下几点排查:
- 消息格式或数据类型不匹配,导致写入ClickHouse失败,此时引擎会发送NACK,消息会保留在RabbitMQ队列中(可能会根据队列配置重新入队)
- RabbitMQ队列的持久化、重试等配置影响了消息生命周期
- ClickHouse服务在处理消息过程中出现异常中断
内容的提问来源于stack exchange,提问作者yelena vorobey
相关产品推荐
相关产品推荐

