• rocketMQ消费者java消费代码


    执行main方法即可启动(如果是spring项目,一般在构造方法调用启动方法接口,记得把类注入到容器即可)

    (启动后 当消息有推送时会自动除发consumeMessage消费事件)

    消费者名称broker-a可随意命名,但是要固定,不然会重新消费该主题所有消息
    package com.chzfsd.controller;
    
    import java.util.List;
    
    import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
    import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
    import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
    import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
    import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
    import org.apache.rocketmq.common.message.MessageExt;
    import org.apache.rocketmq.common.protocol.heartbeat.MessageModel;
    
    
    public class TestMq {
    
        public static void main(String[] args) {
            rocketMQConsumer();
        }
    
        public static void rocketMQConsumer() {
            try {
                System.out.println("rocketMQConsumer  开始------");
                // 消费目标
                // 声明一个消费者consumer,需要传入一个组
                DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("broker-a");
                // 设置集群的NameServer地址,多个地址之间以分号分隔
                consumer.setNamesrvAddr("127.0.0.1:9876");
                // 设置consumer的消费策略
                consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
                // 集群模式消费,广播消费不会重试
                consumer.setMessageModel(MessageModel.CLUSTERING);
                // 设置最大重试次数,默认是16次
                consumer.setMaxReconsumeTimes(5);
                // 设置consumer所订阅的Topic和Tag,*代表全部的Tag
                consumer.subscribe("GD_runmode_syncRunmodeRecloseInfo", "*");
                // Listener,主要进行消息的逻辑处理,监听topic,如果有消息就会立即去消费
                consumer.registerMessageListener(new MessageListenerConcurrently() {
                    @Override
                    public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
                        // 获取第一条消息,进行处理
                        try {
                            if (msgs != null && msgs.size() > 0) {
                                  MessageExt messageExt = msgs.get(0);
                                  String msgBody = new String(messageExt.getBody(), "utf-8");
                                  System.out.println(" 接收消息整体为:" + msgBody);
                            }
                        } catch (Exception e) {
                            System.out.println("消息消费失败,请尝试重试!!!");
                            e.printStackTrace();
                            // 尝试重新消费,直接第三次如果还不成功就放弃消费,进行消息消费失败补偿操作
                            if (msgs.get(0).getReconsumeTimes() == 3) {
                                System.out.println("消息记录日志:" + msgs);
                                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
                            } else {
                                // 重试状态码,重试机制可配置
                                // System.out.println("消息消费失败,尝试重试!!!");
                                System.out.println("消息消费失败,请尝试重试!!!");
                                return ConsumeConcurrentlyStatus.RECONSUME_LATER;
                            }
                        }
                        System.out.println("消息消费成功!!!");
                        return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
                    }
                });
                // 调用start()方法启动consumer
                consumer.start();
                System.out.println("消费者启动成功。。。");
                System.out.println("rocketMQConsumer 结束------");
            } catch (Exception e) {
                e.printStackTrace();
                System.out.println("消息消费操作失败--" + e.getMessage());
            }
        }
    }
  • 相关阅读:
    九度OJ 1136:Number Steps(步数) (基础题)
    九度OJ 1135:字符串排序 (排序)
    九度OJ 1134:密码翻译 (翻译)
    day 2克隆虚拟机器minimal需要注意的问题和制作本地yum源和常用的Linux的命令
    ssh 免 密码登录另一台机器 和 secureCRT的乱码问题
    Select2 用法
    JS常用功能
    虚拟机CentOS的NAT模式联网和SecureCRT远程登录管理工具
    2.网络配置和shell获取ip
    1.安装虚拟机遇到到问题和内存拓展
  • 原文地址:https://www.cnblogs.com/rdchen/p/15210585.html
Copyright © 2020-2023  润新知