全部产品
Search
文档中心

:Mentransfer pesan berukuran besar

更新时间:Nov 09, 2025

Artikel ini menjelaskan cara menggunakan Simple Message Queue (sebelumnya MNS) untuk mentransfer pesan yang ukurannya lebih besar dari 64 KB tanpa memotong pesan tersebut.

Informasi latar belakang

Ukuran maksimum pesan dalam antrian Simple Message Queue (sebelumnya MNS) adalah 64 KB. Batas ini dapat memenuhi kebutuhan pertukaran data dalam sebagian besar kasus saat pengaturan throttling diterapkan. Namun, jika sebuah pesan melebihi 64 KB, pesan tersebut harus dipotong.

MNS menyediakan solusi yang memungkinkan Anda mentransmisikan pesan berukuran lebih besar dari 64 KB tanpa pemotongan.

Solusi

  1. Jika klien produsen mengirim pesan yang ukurannya lebih besar dari 64 KB ke Simple Message Queue (sebelumnya MNS), klien tersebut mengunggah pesan ke Object Storage Service (OSS).
  2. Klien produsen mengirim informasi objek OSS yang berisi pesan ke Simple Message Queue (sebelumnya MNS).
  3. Klien konsumen membaca pesan dari antrian Simple Message Queue (sebelumnya MNS) dan menentukan apakah isi pesan tersebut merupakan informasi objek OSS.
  4. Jika isi pesan adalah informasi objek OSS, klien konsumen mengunduh objek OSS dan mengembalikan isi pesan ke aplikasi lapisan atas.

Gambar berikut menunjukkan proses transfer pesan.

Process

Contoh kode

MNS menyediakan contoh kode Java untuk mentransfer pesan berukuran besar. Unduh contoh kode. Kelas BigMessageSizeQueue merangkum semua fitur yang diperlukan.

BigMessageSizeQueue menyediakan metode publik berikut:

// Tentukan konstruktor. cq adalah objek mnsqueue umum. ossClient dan ossBucketName mencakup informasi wilayah dan bucket OSS yang digunakan untuk mentransfer pesan berukuran besar.
public BigMessageSizeQueue(CloudQueue cq, OSSClient ossClient, String ossBucketName)
// Kirim pesan.
public Message putMessage(Message message) 
// Terima pesan.
public Message popMessage(int waitSeconds) 
// Hapus pesan.
public void deleteMessage(String receiptHandle) 
// Tentukan ukuran maksimum pesan. Jika ukuran pesan melebihi batas, pesan ditransfer menggunakan OSS. Nilai default: 64 KB.
public void setBigMessageSize(long bigMessageSize) 
// Tentukan apakah akan menghapus objek OSS yang berisi pesan. Nilai default: ya.
public void setNeedDeleteMessageObjectOnOSSFlag(boolean flag)           

Untuk informasi lebih lanjut tentang contoh kode, lihat file Demo.java.

Peringatan

  • Mentransfer pesan berukuran besar mengonsumsi sejumlah besar lebar pita jaringan. Bottleneck bandwidth mungkin terjadi pada klien produsen dan konsumen.
  • Mentransfer pesan berukuran besar memakan waktu dan dapat terpengaruh oleh jitter jaringan. Kami menyarankan Anda melakukan retry di lapisan atas jika terjadi kesalahan.