全部产品
Search
文档中心

ApsaraMQ for RabbitMQ:Durasi Hidup Pesan (Message TTL)

更新时间:Jul 06, 2025

Topik ini memperkenalkan istilah-istilah terkait durasi hidup pesan (TTL) di ApsaraMQ for RabbitMQ. Topik ini juga menjelaskan skenario penggunaan, catatan penting, serta metode untuk mengatur durasi hidup pesan.

Apa itu Durasi Hidup Pesan (Message TTL)?

Di ApsaraMQ for RabbitMQ, durasi hidup pesan menentukan berapa lama pesan dapat disimpan dalam antrian. Jika waktu penyimpanan pesan dalam antrian melebihi durasi hidup pesan yang ditentukan, pesan akan diproses menggunakan salah satu dari metode berikut:

  • Jika tidak ada pertukaran surat mati yang dikonfigurasi untuk antrian, pesan akan dibuang oleh antrian.

  • Jika pertukaran surat mati telah dikonfigurasi untuk antrian, pesan akan diteruskan ke pertukaran surat mati dan kemudian diarahkan ke antrian surat mati. Anda dapat mengakses pesan tersebut di antrian surat mati. Untuk informasi lebih lanjut, lihat Pertukaran surat mati.

Skenario penggunaan

Durasi hidup pesan dapat digunakan untuk mencegah akumulasi pesan. Sebagai contoh, jika jumlah pesan dari aplikasi meningkat secara signifikan dalam periode tertentu dan Anda tidak perlu menyimpan pesan yang kedaluwarsa, Anda dapat menentukan durasi hidup pesan untuk membuang pesan yang sudah tidak relevan. Hal ini membantu mencegah penumpukan pesan yang tidak diperlukan dalam bisnis Anda.

Aturan untuk menentukan durasi hidup pesan

  • ApsaraMQ for RabbitMQ memungkinkan Anda menentukan durasi hidup pesan menggunakan argumen x-message-ttl atau expiration. Namun, Anda tidak dapat menggunakan parameter policy dari alat rabbitmqctl untuk menentukan durasi hidup pesan.

  • Anda dapat menentukan durasi hidup pesan saat membuat antrian di konsol ApsaraMQ for RabbitMQ atau saat mengirim pesan.

    Jika durasi hidup pesan ditentukan baik saat pembuatan antrian maupun saat pengiriman pesan, nilai yang lebih kecil akan digunakan sebagai TTL pesan.

  • Durasi hidup pesan aktual dari pesan tertunda dihitung menggunakan rumus berikut: Durasi hidup pesan aktual dari pesan tertunda = min {TTL tingkat pesan, TTL tingkat antrian} + waktu tunda. Untuk informasi lebih lanjut, lihat Pesan tertunda.

  • Nilai maksimum durasi hidup pesan sama dengan interval terjadwal yang ditentukan untuk mengirim pesan terjadwal dalam suatu instance. Nilai durasi hidup pesan harus berupa bilangan bulat non-negatif, dalam milidetik.

  • Jika durasi hidup pesan dari antrian ditetapkan sebagai 0, setelah pesan dirutekan ke antrian, pesan akan dibuang atau diteruskan ke pertukaran surat mati dari antrian kecuali segera dikonsumsi.

Metode pengaturan

ApsaraMQ for RabbitMQ mendukung metode berikut untuk menentukan durasi hidup pesan:

  • Konsol ApsaraMQ for RabbitMQ

    Anda dapat menentukan durasi hidup pesan dari antrian melalui konsol ApsaraMQ for RabbitMQ. Untuk informasi lebih lanjut, lihat Kelola antrian.

  • OpenAPI Explorer

    Anda dapat menggunakan OpenAPI Explorer untuk memanggil operasi CreateQueue guna menentukan durasi hidup pesan dari antrian. Untuk informasi lebih lanjut, lihat CreateQueue.

  • SDK RabbitMQ Sumber Terbuka

    Anda dapat menggunakan SDK RabbitMQ sumber terbuka untuk menentukan durasi hidup pesan dari antrian atau pesan. Untuk informasi lebih lanjut, lihat SDK yang didukung. Contoh kode:

    • Tentukan durasi hidup pesan dari antrian menggunakan argumen x-message-ttl

      Map<String, Object> props = new HashMap<String, Object>();
      props.put("x-message-ttl", 1000);
      channel.queueDeclare("myqueue", false, false, false, props);
    • Tentukan durasi hidup pesan dari pesan menggunakan argumen expiration

      byte[] messageBodyBytes = "test".getBytes();
      AMQP.BasicProperties properties = new AMQP.BasicProperties.Builder()
              .expiration("1000")
              .build();
      channel.basicPublish("myqueue", peoperties, messageBodyBytes);