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); } });