全部产品
Search
文档中心

:Bagaimana cara menolak dan mengantre ulang pesan untuk konsumen?

更新时间:Jul 02, 2025

Jika konsumen tidak dapat mengonsumsi pesan secara langsung tetapi konsumen lain mampu melakukannya, Anda dapat menolak dan mengantre ulang pesan tersebut agar dapat dikonsumsi oleh konsumen lain. Artikel ini menjelaskan cara menolak dan mengantre ulang pesan untuk konsumen.

Tolak dan antre ulang satu pesan untuk konsumen

Metode basicReject dapat digunakan untuk menolak satu pesan. Anda dapat memanggil metode ini untuk menolak dan mengantre ulang pesan bagi konsumen.

  • Metode basicReject melibatkan parameter berikut:

    • deliveryTag: Pengenal unik dari pesan dalam saluran.

    • requeue: Menentukan apakah akan mengantre ulang pesan yang ditolak. Jika diatur ke true, pesan yang ditolak akan diantre ulang. Jika diatur ke false, pesan yang ditolak akan dibuang atau dikirim ke pertukaran surat mati. Untuk informasi lebih lanjut, lihat Pertukaran Surat Mati.

  • Kode berikut memberikan contoh cara memanggil metode 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("Ditolak: " + new String(body, "UTF-8") + ", deliveryTag: " + envelope.getDeliveryTag() + ", messageId: " + properties.getMessageId());
            channel.basicReject(envelope.getDeliveryTag(), true);
        }
    });

Tolak dan antre ulang beberapa pesan untuk konsumen

Metode basicNack dapat digunakan untuk menolak beberapa pesan. Anda dapat memanggil metode ini untuk menolak dan mengantre ulang beberapa pesan bagi konsumen.

  • Metode basicNack melibatkan parameter berikut:

    • deliveryTag: Pengenal unik dari pesan dalam saluran.

    • multiple: Menentukan apakah akan menolak beberapa pesan. Jika diatur ke true, pesan dengan tag pengiriman tertentu dan semua pesan sebelumnya dalam antrean juga akan ditolak. Jika diatur ke false, hanya pesan dengan tag pengiriman tertentu yang akan ditolak.

    • requeue: Menentukan apakah akan mengantre ulang pesan-pesan yang ditolak. Jika diatur ke true, pesan-pesan yang ditolak akan diantre ulang. Jika diatur ke false, pesan-pesan yang ditolak akan dibuang atau dikirim ke pertukaran surat mati. Untuk informasi lebih lanjut, lihat Pertukaran Surat Mati.

  • Kode berikut memberikan contoh cara memanggil metode basicNack:

    channel.basicConsume("test", false, new DefaultConsumer(channel) {
       @Override
        public void handleDelivery(String consumerTag, Envelope envelope,
                          AMQP.BasicProperties properties, byte[] body)
                throws IOException {
            System.out.println("Ditolak: " + new String(body, "UTF-8") + ", deliveryTag: " + envelope.getDeliveryTag() + ", messageId: " + properties.getMessageId());
            channel.basicNack(envelope.getDeliveryTag(), true, true);
        }
    });