public class PushConsumer {
public static void main(String[] args) throws Exception {
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("xx-consumer");// 实际组名
consumer.setToken("token");// 实际Token
consumer.setNamesrvAddr("ip:port;ip1:port1");// 实际地址,分号分隔
consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);// 从最开始处开始消费
consumer.subscribe("TOPIC", "*");// Tag 用于消费过滤,不需要可使用"*"
consumer.registerMessageListener(new MessageListenerConcurrently() {
@Override
public ConsumeConcurrentlyStatus consumeMessage(List msgs, ConsumeConcurrentlyContext context) {
System.out.println(Thread.currentThread().getName() + " Receive New Messages: " + msgs);
// 返回成功,消息会被ACK
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
});
consumer.start();
System.out.printf("Consumer Started.%n");
}
}
注意:return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; 需要确定是集群部署还是广播模式部署,集群只给一个订阅者发送消息,注意不要消费了别人的消息;广播模式会给所有订阅者发送消息,消费的时候要都返回ack,否则轮询次数超过限定值(默认16次)会进入私信队列,会有报警。