`

rabbitmq-ConfirmListener

 
阅读更多

当broker开启confirm时,可以添加此监听器。

public void testWaitForConfirms()
        throws IOException, InterruptedException
    {

         // 创建Channel时开启:channel.confirmSelect();

 

        // 记录客户端发送消息的序号1、2、3、4、。。。
        final SortedSet<Long> unconfirmedSet = Collections.synchronizedSortedSet(new TreeSet<Long>());
        channel.addConfirmListener(new ConfirmListener() {
                public void handleAck(long seqNo, boolean multiple) {
                    if (!unconfirmedSet.contains(seqNo)) {
                        fail("got duplicate ack: " + seqNo);
                    }

                    // 这里multile=true时,我理解为broker批量发送ack确认。

                    // 客户端就把此次消息序号之前的记录全删除,代表这个消息值钱的消息broker都已接收到
                    if (multiple) {
                        unconfirmedSet.headSet(seqNo + 1).clear();
                    } else { // broker单个返回ack确认
                        unconfirmedSet.remove(seqNo);
                    }
                }

                public void handleNack(long seqNo, boolean multiple) {
                    fail("got a nack");
                }
            });

        for (long i = 0; i < NUM_MESSAGES; i++) {
            unconfirmedSet.add(channel.getNextPublishSeqNo());
            publish("", "confirm-test", true, false);
        }

        channel.waitForConfirmsOrDie();
        if (!unconfirmedSet.isEmpty()) {
            fail("waitForConfirms returned with unconfirmed messages");
        }
    }

分享到:
评论

相关推荐

    rabbitmq-c-master.rar_RabbitMQ c lib_cmake编译_rabbitmq_rabbitmq-c

    `rabbitmq-c`是RabbitMQ的一个C语言客户端库,它使得在C程序中与RabbitMQ服务器进行交互变得更加简单。本文将详细介绍如何使用CMake编译`rabbitmq-c-master`源码,并讨论相关知识点。 首先,我们需要了解CMake,这...

    RabbitMQ-c源码

    **RabbitMQ-c源码分析** RabbitMQ-c是一个轻量级且高效的C语言实现的RabbitMQ客户端库。RabbitMQ是一个开源的消息代理和队列服务器,它使用AMQP(Advanced Message Queuing Protocol)协议,广泛应用于分布式系统中...

    RabbitMQ rabbitmq-server-3.6.12-1.el6.noarch 及其安装所需要的软件打包

    RabbitMQ rabbitmq-server-3.6.12-1.el6.noarch 及其安装所需要的软件打包都在这里面,主要报卡一下软件:socat-1.7.3.2.tar.gz、rabbitmq-server-3.6.12-1.el6.noarch.rpm、rabbitmq-release-signing-key.asc、otp_...

    rabbitmq-c vs2019工程

    标题中的“rabbitmq-c vs2019工程”指的是一个基于C++的RabbitMQ客户端库项目,该库已经适配了Visual Studio 2019。RabbitMQ是一种广泛使用的开源消息代理软件,它实现了Advanced Message Queuing Protocol (AMQP)...

    rabbitmq-server-mac-standalone-3.5.3

    1. **下载与解压**:首先,从官方网站或者提供的链接下载`rabbitmq-server-mac-standalone-3.5.3.tar.gz`,然后使用`tar -zxvf rabbitmq-server-mac-standalone-3.5.3.tar.gz`命令将其解压缩。 2. **环境配置**:...

    rabbitmq-server-3.6.5-1.noarch.rar

    标题中的“rabbitmq-server-3.6.5-1.noarch.rar”指的是RabbitMQ服务器的一个特定版本,即3.6.5版本。RabbitMQ是一个开源的消息队列系统,基于AMQP(Advanced Message Queuing Protocol)协议,用于在分布式系统中...

    rabbitmq-server-3.5.4.tar.gz

    在Linux环境下,RabbitMQ的安装通常涉及下载其发行版的tar.gz文件,例如"rabbitmq-server-generic-unix-3.5.4.tar.gz"。这个版本是专门为Linux系统设计的。 首先,我们来详细解释一下RabbitMQ的核心概念和功能。...

    rabbitmq-server-generic-unix-3.5.7.tar.rar下载,rabbitmq安装包

    在您提供的资源中,“rabbitmq-server-generic-unix-3.5.7.tar.rar”是一个针对Linux平台的RabbitMQ服务器的离线安装包。这个版本为3.5.7,您需要在Windows环境下解压后再用于Linux系统。下面将详细介绍RabbitMQ的...

    rabbitmq-server-3.8.3安装包

    本资源提供的`rabbitmq-server-3.8.3`是RabbitMQ服务器的一个版本,适用于那些在官网下载速度较慢的用户。 在安装`rabbitmq-server-3.8.3`之前,首先需要了解一些基础概念: 1. **消息队列**:消息队列是中间件的...

    rabbitmq-c & rabbitmq-codegen.tar.gz

    它基于AMQP(Advanced Message Queuing Protocol)协议,提供了多种语言的客户端库,包括我们这里关注的`rabbitmq-c`,这是一个用C语言编写的RabbitMQ客户端库。 `rabbitmq-c`是为那些希望在C语言环境中与RabbitMQ...

    rabbitmq-c-master.zip

    《深入理解RabbitMQ客户端库:rabbitmq-c》 RabbitMQ是一款广泛应用的消息中间件,它基于AMQP(Advanced Message Queuing Protocol)协议,提供高效、可靠的消息传递服务。在开发过程中,为了与RabbitMQ服务器进行...

    rabbitmq-server-3.7.3百度网盘下载.txt

    这里提供了rabbitmq-server-3.7.3.exe百度网盘下载,官网下载实在是太慢了,亲测有效! rabbitmq-server-3.7.3.exe rabbitmq-server-3.7.3.exe rabbitmq-server-3.7.3.exe

    rabbitmq-server-3.6.5-1.noarch.zip

    标题中的“rabbitmq-server-3.6.5-1.noarch.zip”指的是RabbitMQ服务器的一个特定版本,即3.6.5版本。这个压缩包是针对非架构特定的(noarch),意味着它可以在多种处理器架构上运行,不局限于特定的CPU类型。此版本...

    最新版linux rabbitmq-server-generic-unix-3.9.1.tar.xz

    最新版linux rabbitmq-server-generic-unix-3.9.1.tar.xz最新版linux rabbitmq-server-generic-unix-3.9.1.tar.xz

    rabbitmq-server-3.8.3.exe和erlang22.2.exe 64位压缩文件

    标题提到的"rabbitmq-server-3.8.3.exe"是RabbitMQ服务器的3.8.3版本安装程序,适用于64位操作系统。这个版本可能包含了一些新特性、性能优化以及对旧版本bug的修复。RabbitMQ每个新版本的发布都会带来一些改进,以...

    rabbitmq-server-3.6.15-1.el7.noarch.zip

    在本例中,我们关注的是`rabbitmq-server-3.6.15-1.el7.noarch.rpm`这个软件包,它是RabbitMQ服务器的3.6.15版本,针对的是Red Hat Enterprise Linux 7 (RHEL 7)或与其兼容的系统,如CentOS 7。 1. **RabbitMQ基础...

    最新版windows rabbitmq-server-3.8.14.exe

    最新版windows rabbitmq-server-3.8.14.exe最新版windows rabbitmq-server-3.8.14.exe

    最新版linux rabbitmq-server-generic-unix-3.8.14.tar.xz

    最新版linux rabbitmq-server-generic-unix-3.8.14.tar.xz最新版linux rabbitmq-server-generic-unix-3.8.14.tar.xz

    rabbitmq-server-generic-unix-3.6.1.tar

    标题中的“rabbitmq-server-generic-unix-3.6.1.tar”是指RabbitMQ服务器的3.6.1版本的通用Unix安装包。RabbitMQ是一个开源的消息代理和队列服务器,广泛应用于分布式系统中,用于处理异步任务、消息传递和负载均衡...

    rabbitmq-server-mac-standalone-3.5.7.tar.gz

    这个压缩包“rabbitmq-server-mac-standalone-3.5.7.tar.gz”是专为MAC OS X操作系统设计的RabbitMQ服务器版本,支持10.6.4或更高版本。在本文中,我们将深入探讨RabbitMQ的核心概念、安装过程以及如何在MAC OS X上...

Global site tag (gtag.js) - Google Analytics