rabbitMq实现已读消息和未读消息的查询

       //进行链接常见
        //  xfRabbitTemplate  自定义的链接创建类
        Channel channel = xfRabbitTemplate.getChannel();
 
        //消费者定义
        channel.queueDeclare(Queue.TEXT_MESSAGE, true, false, false, null);
        //从队列中检索消息
        GetResponse result = channel.basicGet(Queue.TEXT_MESSAGE, true);
        //获取当前队列中消息的消息体
        byte[] body = result.getBody();
        //获取当前消息数据个数
        result.getMessageCount();
        //获取当前队列要交给消费者的消息
        channel.messageCount(Queue.TEXT_MESSAGE);
        //进行队列消息和传递消息进行
        if(body.equals(message)) {
            //进行消费标记
            channel.basicAck(result.getEnvelope().getDeliveryTag(), false);   
            result.getEnvelope().getDeliveryTag();
 
            //创建消费者
            System.out.println("== body " + body +  "msdg = " + message);
        }
 
 
        /**
         * 获取已经被ack之后的消息(已读):
         * autoAck 默认为 false 没有给消费者查看,消费者查询则为true
         * 当前查询没有被阅读的消息
         */
        GetResponse outChan = channel.basicGet(Queue.TEXT_MESSAGE, false);
        if(outChan != null) {
            infos.add(outChan.getBody().toString());

 

posted @ 2021-02-25 11:06  YoungDeng  阅读(1214)  评论(0编辑  收藏  举报