当RocketMQ使用SQL过滤时,The broker does not support consumer to filter message by SQL92解决

本文介绍了解决RocketMQ在使用SQL过滤时遇到的问题。主要问题是Broker不支持通过SQL92进行消息过滤,解决方法是在Broker配置文件中启用SQL过滤支持,并重启Broker。

当RocketMQ使用SQL过滤时,启动程序报错The broker does not support consumer to filter message by SQL92

当启动服务时会报错

报错信息如下

Exception in thread "main" org.apache.rocketmq.client.exception.MQClientException: CODE: 1  DESC: The broker does not support consumer to filter message by SQL92
For more information, please visit the url, http://rocketmq.apache.org/docs/faq/

截图如下:
在这里插入图片描述

这是因为默认的broker并没有开启对SQL语法的支持,需要修改配置:

打开broker服务器下的broker.conf文件

cd rocketmq/conf
ll
vim broker.conf

当前配置项

在这里插入图片描述

需要添加配置项

enablePropertyFilter=true

修改后的broker.conf配置文件
在这里插入图片描述
然后重新启动broker,并指定刚刚修改的conf配置文件

sh mqbroker -n localhost:9876 -c ../conf/broker.conf 

再次发送消息启动程序,就不会报错。

该问题提示表明客户端配置使用的是`PLAINTEXT`协议,但Kafka Broker 0不支持此协议,可从客户端和服务端配置两方面解决。 ### 检查并修改客户端配置 确保KafkaTools客户端配置的安全协议与Kafka Broker支持的协议一致。若Broker启用了SASL认证,客户端也需配置相应的SASL协议。可以参考Kafka SASL_PLAINTEXT认证配置实战的步骤,在`producer.properties`和`consumer.properties`中添加相关配置,确保使用的是`SASL_PLAINTEXT`协议,而不是`PLAINTEXT`协议。同,修改相关shell脚本,如`kafka-console-producer.sh`和`kafka-console-consumer.sh`,使用`--security-protocol SASL_PLAINTEXT`参数,示例命令如下: ```bash bin/kafka-console-producer.sh --broker-list broker_address --topic kafka_topic --security-protocol SASL_PLAINTEXT ``` ### 检查并修改服务端配置 确保Kafka Broker服务端正确配置了支持的安全协议。可修改`server.properties`文件,添加或修改`listeners`和`advertised.listeners`配置,使其支持`SASL_PLAINTEXT`协议,示例配置如下: ```properties listeners=SASL_PLAINTEXT://your_host:your_port advertised.listeners=SASL_PLAINTEXT://your_external_host:your_external_port ``` ### 配置JAAS文件 按照Kafka SASL_PLAINTEXT认证配置实战的步骤,创建并配置`kafka_client_jaas.conf`、`kafka_server_jaas.conf`和`zookeeper_jaas.conf`文件,确保服务端和客户端都能正确进行SASL认证。例如,在启动脚本中设置JAAS配置文件路径,可在`kafka-server-start.sh`和`zookeeper-server-start.sh`中添加如下环境变量: ```bash export KAFKA_OPTS="-Djava.security.auth.login.config=/var/local/kafka/jaas/kafka_server_jaas.conf" ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值