我在理解RabbitMQ的确认方面遇到了一些麻烦,我从RabbitMQ看到以下解释:
笔记
如果代理在将所述消息写入磁盘之前崩溃,则代理会丢失持久消息.在某些情况下,这会导致经纪人以令人惊讶的方式行事.例如,考虑这种情况:
客户端将持久性消息发布到持久队列
客户端使用队列中的消息(注意消息是持久的,队列是持久的),但还没有消息,
经纪人去世并重新启动,并且
客户端重新连接并开始使用消息.
此时,客户端可以合理地假设该消息将再次传递.情况并非如此:重启导致代理丢失消息.为了保证持久性,客户应该使用确认.如果发布者的频道处于确认模式,则发布者不会收到丢失消息的确认消息(因为消费者没有得到它并且没有写入磁盘).
然后我使用这个http://hg.rabbitmq.com/rabbitmq-java-client/file/default/test/src/com/rabbitmq/examples/ConfirmDontLoseMessages.java做一些基本测试并验证确认,但得到一些奇怪的结果:
由于我是RabbitMQ的新手,任何人都可以告诉我,我对确认理解的问题在哪里?
rabbitmq ×1