今天在测试自己写的Rabbitmq的demo的时候出现了这么一个问题:
系统异常其中显示问题原因在于channel已经被关闭导致,抛出异常。但是信息同时显示reply-code=200, reply-text=OK,这说明生产者一端的消息已经成功被消费者接收,初步判断异常与生产者一端无关。后来我检查了代码,发现了这么一个问题,
附上我的代码:
Producer(这段代码是在《Rabbit MQ实战指南》的基础上修改的) Consumer从代码中可以看到,在消费者一端线程等待了一秒之后会关闭channel和connection,而此时还有消息没有被消费完,导致程序发生异常。解决方法是将代码改为TimeUnit.SECONDS.sleep(1000),让消费者一端有足够时间处理消息。
结果如图所示
程序不再发生异常
网友评论