全部产品
Search
文档中心

ApsaraMQ for RocketMQ:Pesan terjadwal dan tertunda

更新时间:Dec 25, 2025

Topik ini menjelaskan istilah, skenario, dan catatan penggunaan pesan terjadwal dan tertunda di ApsaraMQ for RocketMQ.

Istilah

  • Pesan terjadwal: Pesan yang dikirim oleh broker ApsaraMQ for RocketMQ kepada konsumen pada waktu tertentu.

  • Pesan tertunda: Pesan yang dikirim oleh broker ApsaraMQ for RocketMQ kepada konsumen setelah periode waktu tertentu.

Meskipun ada perbedaan dalam implementasi kode antara pesan terjadwal dan pesan tertunda, keduanya mencapai efek yang sama. Setelah kedua jenis pesan dikirim ke broker ApsaraMQ for RocketMQ, pesan tersebut akan ditunda selama periode waktu tertentu sebelum dikirim ke konsumen.

Skenario

Pesan terjadwal dan pesan tertunda dapat digunakan dalam skenario berikut:

  • Membutuhkan jendela waktu antara produksi pesan dan konsumsi. Sebagai contoh, dalam transaksi e-commerce, ketika konsumen membuat pesanan yang kedaluwarsa dalam 30 menit, pesan tertunda segera dikirim ke broker Antrian Pesan untuk RabbitMQ. Broker Antrian Pesan untuk RabbitMQ mengirimkan pesan kepada konsumen setelah 30 menit. Saat menerima pesan, konsumen memeriksa apakah pembayaran sudah selesai. Jika pembayaran belum selesai, konsumen menutup pesanan; jika pembayaran sudah selesai, konsumen mengabaikan pesan tersebut.

  • Menggunakan pesan untuk memicu tugas terjadwal, seperti mengirim notifikasi kepada pengguna pada titik waktu tertentu.

Penggunaan

Pesan terjadwal dan pesan tertunda memiliki perbedaan berikut dalam hal kode:

  • Untuk mengirim pesan terjadwal, tentukan titik waktu yang lebih lambat dari waktu saat pesan dikirim oleh produsen. Broker akan mengirim pesan ke konsumen pada titik waktu yang ditentukan.

  • Untuk mengirim pesan tertunda, tentukan periode waktu yang dimulai dari waktu pengiriman pesan oleh produsen. Broker akan mengirim pesan ke konsumen setelah periode waktu yang ditentukan telah berlalu.

Aturan pengaturan untuk waktu terjadwal dan waktu tertunda

  • Parameter msg.setStartDeliverTime untuk pesan terjadwal atau pesan tertunda harus diatur ke titik waktu atau periode waktu setelah cap waktu saat ini. Satuan: milidetik. Jika waktu terjadwal lebih awal dari waktu saat ini, pesan akan segera dikirimkan ke konsumen.

  • Parameter msg.setStartDeliverTime untuk pesan terjadwal atau pesan tertunda dapat diatur ke titik waktu atau periode waktu dalam 40 hari. Satuan: milidetik. Jika titik waktu atau periode waktu yang ditentukan melebihi 40 hari, pesan tidak dapat dikirim.

Catatan penggunaan

Konsistensi tipe pesan

Tipe pesan yang dapat digunakan topik untuk mengirim harus sama dengan tipe pesan yang dipilih saat membuat topik. Sebagai contoh, jika Anda memilih Scheduled/Delayed Message untuk parameter Message Type saat membuat topik di ApsaraMQ for RocketMQconsole, topik tersebut hanya dapat digunakan untuk mengirim pesan terjadwal dan pesan tertunda.

Latensi untuk mengirim pesan terjadwal dan pesan tertunda

  • Latensi 1 hingga 2 detik mungkin terjadi saat mengirim pesan terjadwal.

  • Parameter StartDeliverTime menentukan waktu ketika broker ApsaraMQ for RocketMQ mulai mengirim pesan ke konsumen. Jika ada pesan yang terakumulasi, pesan terjadwal atau pesan tertunda akan masuk antrian setelah pesan yang terakumulasi dan tidak dapat dikirim ke konsumen pada waktu yang ditentukan.

  • Karena kemungkinan perbedaan waktu antara klien dan broker, waktu pengiriman aktual mungkin berbeda dari waktu pengiriman yang ditentukan di klien.

  • Pesan terjadwal dan pesan tertunda dapat disimpan hingga tiga hari di broker ApsaraMQ for RocketMQ.

    Sebagai contoh, sebuah pesan dijadwalkan untuk dikonsumsi dalam 5 hari. Jika pesan tersebut tidak dikonsumsi setelah 5 hari, pesan tersebut akan dihapus pada hari kedelapan.

Contoh kode TCP

Untuk informasi tentang contoh kode untuk mengirim pesan terjadwal dan pesan tertunda melalui protokol TCP, lihat dokumentasi berikut:

Contoh kode HTTP

Untuk informasi tentang contoh kode untuk mengirim pesan terjadwal dan pesan tertunda melalui protokol HTTP, lihat dokumentasi berikut: