All Products
Search
Document Center

ApsaraMQ for RabbitMQ:Bagaimana cara memecahkan masalah kesalahan QueueHasDiffField yang dilaporkan pada klien ApsaraMQ for RabbitMQ?

Last Updated:Jul 06, 2025

Topik ini menjelaskan penyebab dan metode pemecahan masalah untuk kesalahan QueueHasDiffField yang dilaporkan pada ApsaraMQ for RabbitMQ klien.

Gejala

Ketika mencoba mengakses broker ApsaraMQ for RabbitMQ dari klien ApsaraMQ for RabbitMQ, muncul kesalahan QueueHasDiffField seperti QueueHasDiffField[OAutoDelete=false&NAutoDelete=true;].

Catatan

Dalam informasi kesalahan, parameter yang dimulai dengan O menunjukkan nilai atribut dari antrian yang digunakan, sedangkan parameter yang dimulai dengan N menunjukkan nilai atribut dari antrian yang dideklarasikan.

Penyebab

Nilai atribut dari antrian yang digunakan tidak konsisten dengan antrian yang dideklarasikan. Tabel berikut menjelaskan parameter atribut yang mungkin tidak konsisten.

Parameter

Tipe Data

Deskripsi

queue

String

Nama dari antrian.

durable

Boolean

Menentukan apakah antrian bersifat tahan lama:

  • true: Antrian secara otomatis dipulihkan jika ApsaraMQ for RabbitMQ klien terhubung kembali ke ApsaraMQ for RabbitMQ broker.

  • false: Antrian tidak secara otomatis dipulihkan jika ApsaraMQ for RabbitMQ klien terhubung kembali ke ApsaraMQ for RabbitMQ broker.

Catatan

Secara default, antrian bersifat persisten, terlepas dari apakah dibuat dengan memanggil operasi API CreateQueue atau melakukan operasi pada halaman Queues di ApsaraMQ for RabbitMQ console.

exclusive

Boolean

Menentukan apakah antrian bersifat eksklusif:

  • true: Antrian hanya dapat digunakan oleh koneksi deklarasinya, dan secara otomatis dihapus ketika koneksi ditutup. Koneksi deklarasi dari antrian merujuk pada koneksi di mana antrian dideklarasikan pertama kali.

  • false: Antrian dapat digunakan oleh semua koneksi, dan tidak secara otomatis dihapus ketika koneksi deklarasinya ditutup.

autoDelete

Boolean

Menentukan apakah antrian dapat dihapus secara otomatis:

  • true: Antrian secara otomatis dihapus setelah langganan terakhir dari konsumen dibatalkan.

  • false: Antrian tidak secara otomatis dihapus setelah langganan terakhir dari konsumen dibatalkan.

arguments

Map

Parameter lain dari antrian, termasuk dead-letter exchange, dead-letter routing key, dan message TTL.

Sebagai contoh, jika nilai autoDelete untuk antrian yang digunakan tidak konsisten dengan antrian yang dideklarasikan, maka akan dilaporkan kesalahan QueueHasDiffField[OAutoDelete=false&NAutoDelete=true;].

  • Nilai autoDelete untuk antrian yang digunakan adalah false.

    Catatan

    Anda dapat memanggil operasi API ListQueues atau melakukan operasi pada halaman Queues di ApsaraMQ for RabbitMQ console untuk mendapatkan nilai parameter atribut untuk antrian tersebut.

  • Nilai autoDelete untuk antrian yang dideklarasikan adalah true.

    Contoh kode:

    channel.queueDeclare("test", false, false, true, null);

Solusi

Ubah nilai yang tidak konsisten dalam kode deklarasi untuk memastikan nilainya sesuai dengan antrian yang digunakan. Dalam contoh ini, ubah nilai autoDelete menjadi false.

Contoh kode:

channel.queueDeclare("test", false, false, false, null);