RocketMQ支持SQL92的语法规范。但是采用MessageFilter方式实现时,运行发现无法正常过滤消息。
//DefaultMQPushConsumer的签名方法,采用MessageFilter实现类过滤消息
public void subscribe(String topic, String fullClassName, String filterClassSource) throws MQClientException {
PushConsumer如下:
/**
* java -cp .:lib/* demo.rocketmq.consumer.PushConsumerDemo1 g1<br>
*/
public class PushConsumerDemo1 {
public static void main(String[] args) throws MQClientException, IOException {
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(args[0]);
consumer.setNamesrvAddr("localhost:9876");
//上次消费的位置
consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET);
//该种方式已经不再支持了,4.3.0以后只支持MessageSelector.bySql形式过滤,
consumer.subscribe("TopicTest", "demo.rocketmq.consumer.TimestampMessageFilter"
, MixAll.file2String("/usr/local/rocketmq