日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

怎樣讓Consumer不立即消費(fèi)消息并使消息重入隊(duì)列?

更新時(shí)間:

您可以通過basicReject或basicNack方法否定應(yīng)答消息,使消息重入隊(duì)列,從而是其他Consumer可以消費(fèi)消息。

使用basicReject方法否定應(yīng)答單條消息并使消息重入隊(duì)列

您可以使用basicReject方法實(shí)現(xiàn)Consumer否定應(yīng)答單條消息并使其重入隊(duì)列。

  • basicReject方法的參數(shù)說明如下:
    • deliveryTag:Channel的消息投遞的唯一標(biāo)識(shí)符。
    • requeue:被否定應(yīng)答的消息是否重入隊(duì)列。如果設(shè)置為true,則消息重入隊(duì)列;如果設(shè)置為false,則消息被丟棄或發(fā)送到死信Exchange。更多信息,請(qǐng)參見死信Exchange
  • basicReject方法的示例代碼如下:
    channel.basicConsume("test", false, "consumertag", new DefaultConsumer(channel) {
       @Override
        public void handleDelivery(String consumerTag, Envelope envelope,
                          AMQP.BasicProperties properties, byte[] body)
                throws IOException {
            System.out.println("Rejected: " + new String(body, "UTF-8") + ", deliveryTag: " + envelope.getDeliveryTag() + ", messageId: " + properties.getMessageId());
            channel.basicReject(envelope.getDeliveryTag(), true);
        }
    });

使用basicNack方法否定應(yīng)答多條消息并使消息重入隊(duì)列

您可以使用basicNack方法實(shí)現(xiàn)Consumer否定應(yīng)答多條消息并使其重入隊(duì)列。

  • basicNack方法的參數(shù)說明如下:
    • deliveryTag:Channel的消息投遞的唯一標(biāo)識(shí)符。
    • multiple:是否否定應(yīng)答多條消息。如果設(shè)置為true,則否定應(yīng)答帶指定deliveryTag的消息及該deliveryTag之前的多條消息;如果設(shè)置為false,則僅否定應(yīng)答帶指定deliveryTag的單條消息。
    • requeue:被否定應(yīng)答的消息是否重入隊(duì)列。如果設(shè)置為true,則消息重入隊(duì)列;如果設(shè)置為false,則消息被丟棄或發(fā)送到死信Exchange。更多信息,請(qǐng)參見死信Exchange。
  • basicNack方法的示例代碼如下:
    channel.basicConsume("test", false, "consumertag", new DefaultConsumer(channel) {
       @Override
        public void handleDelivery(String consumerTag, Envelope envelope,
                          AMQP.BasicProperties properties, byte[] body)
                throws IOException {
            System.out.println("Rejected: " + new String(body, "UTF-8") + ", deliveryTag: " + envelope.getDeliveryTag() + ", messageId: " + properties.getMessageId());
            channel.basicNack(envelope.getDeliveryTag(), true, true);
        }
    });