"channel is already closed due t

2018-10-24  本文已影响0人  momo_vivi

 今天在测试自己写的Rabbitmq的demo的时候出现了这么一个问题:

系统异常

其中显示问题原因在于channel已经被关闭导致,抛出异常。但是信息同时显示reply-code=200, reply-text=OK,这说明生产者一端的消息已经成功被消费者接收,初步判断异常与生产者一端无关。后来我检查了代码,发现了这么一个问题,

附上我的代码:

Producer(这段代码是在《Rabbit MQ实战指南》的基础上修改的) Consumer

从代码中可以看到,在消费者一端线程等待了一秒之后会关闭channel和connection,而此时还有消息没有被消费完,导致程序发生异常。解决方法是将代码改为TimeUnit.SECONDS.sleep(1000),让消费者一端有足够时间处理消息。

结果如图所示

程序不再发生异常
上一篇下一篇

猜你喜欢

热点阅读