while (falg) { debuglogger.info("find msg of: " + acid); QueueingConsumer.Delivery delivery = consumer.nextDelivery(); String text = new String(delivery.getBody()); // 解析消息 String from = ""; String to = ""; 。。。。。。。。 }
当我试着去关闭 channel 通道的时候。。报以下错误:
com.rabbitmq.client.ShutdownSignalException: clean channel shutdown; reason: #method<channel.close>(reply-code=200, reply-text=OK, class-id=0, method-id=0) at com.rabbitmq.client.QueueingConsumer.handle(QueueingConsumer.java:198) at com.rabbitmq.client.QueueingConsumer.nextDelivery(QueueingConsumer.java:214) at com.handbb.dating.mq.MQMsgMrg.recmsg(MQMsgMrg.java:251) at com.handbb.dating.action.UserAction$1.run(UserAction.java:156) Caused by: com.rabbitmq.client.ShutdownSignalException: clean channel shutdown; reason: #method<channel.close>(reply-code=200, reply-text=OK, class-id=0, method-id=0) at com.rabbitmq.client.impl.ChannelN.close(ChannelN.java:521) at com.rabbitmq.client.impl.ChannelN.close(ChannelN.java:480) at com.rabbitmq.client.impl.ChannelN.close(ChannelN.java:473) at com.handbb.dating.mq.MQMsgMrg.closeMq(MQMsgMrg.java:519) at com.handbb.dating.action.UserAction.userlogout(UserAction.java:194) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452) at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
原因可能能为我还在不停的从队列中去接受消息,现在去关闭channel的时候。发生异常。。
现在问题是。我要怎么去合理的关闭channel,不会发生异常,或者理解为。怎么样去更好的接受消息??
求好心人指点。。谢谢。。。