一文搞懂RabbitMQ的ack與nack
點擊上方“JavaEdge”,關(guān)注公眾號
connection = factory.newConnection();final Channel channel = connection.createChannel();channel.queueDeclare("隊列名", true, false, false, null);//第二個參數(shù)設(shè)為true為自動應答,false為手動ackchannel.basicConsume("隊列名", true, new DefaultConsumer(channel){public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {try {Thread.sleep(10000);System.out.println(new String(body, "UTF-8"));//模擬異常int i = 1/0;//手動ack//channel.basicAck(envelope.getDeliveryTag(), false);} catch (Exception e) {//重新放入隊列//channel.basicNack(envelope.getDeliveryTag(), false, true);//拋棄此條消息//channel.basicNack(envelope.getDeliveryTag(), false, false);e.printStackTrace();}finally {}}});
ack機制為自動
手動ack應答(channel.basicAck方法)
這條消息重新放回隊列,重新消費
拋棄此條消息

目前交流群已有 800+人,旨在促進技術(shù)交流,可關(guān)注公眾號添加筆者微信邀請進群
喜歡文章,點個“在看、點贊、分享”素質(zhì)三連支持一下~
評論
圖片
表情
