全部产品
Search
文档中心

ApsaraMQ for RocketMQ:Kirim dan terima pesan normal

更新时间:Jul 02, 2025

Pesan normal adalah pesan tanpa fitur khusus yang disediakan oleh ApsaraMQ for RocketMQ. Pesan ini berbeda dari jenis pesan lain seperti pesan terjadwal, tertunda, terurut, atau transaksional. Setiap topik hanya dapat digunakan untuk mengirim dan menerima satu jenis pesan. Sebagai contoh, topik yang digunakan untuk pesan normal tidak dapat digunakan untuk jenis pesan lain. Bagian ini menyediakan kode contoh untuk mengirim dan menerima pesan normal menggunakan SDK klien TCP untuk C atau C++.

Prasyarat

Pastikan langkah-langkah berikut telah dilakukan:

  • SDK untuk C atau C++ telah diunduh. Untuk informasi lebih lanjut, lihat Catatan Rilis.

  • Lingkungan telah dipersiapkan. Untuk informasi lebih lanjut, lihat Persiapan Lingkungan (V1.x.x).

  • Sumber daya yang ingin Anda gunakan dalam kode telah dibuat di Konsol ApsaraMQ for RocketMQ, termasuk instance, topik, dan grup konsumen. Untuk informasi lebih lanjut, lihat Buat Sumber Daya.

  • Pasangan AccessKey akun Alibaba Cloud Anda telah diperoleh. Untuk informasi lebih lanjut, lihat Buat Pasangan AccessKey.

Kirim pesan normal

Contoh kode berikut menunjukkan cara mengirim pesan normal menggunakan SDK klien TCP untuk C atau C++:

#include "ONSFactory.h"
#include "ONSClientException.h"

using namespace ons;

int main()
{

    // Buat produsen dan konfigurasikan parameter yang diperlukan untuk mengirim pesan. 
    ONSFactoryProperty factoryInfo; 
    // ID grup konsumen yang Anda buat di konsol ApsaraMQ for RocketMQ. 
    factoryInfo.setFactoryProperty(ONSFactoryProperty::ProducerId, "XXX");
    // Titik akhir TCP. Anda bisa mendapatkan titik akhir di bagian TCP Endpoint halaman Detail Instance di konsol ApsaraMQ for RocketMQ. 
    factoryInfo.setFactoryProperty(ONSFactoryProperty::NAMESRV_ADDR, "XXX");
    // Topik yang Anda buat di konsol ApsaraMQ for RocketMQ. 
    factoryInfo.setFactoryProperty(ONSFactoryProperty::PublishTopics,"XXX" );
    // Isi pesan. 
    factoryInfo.setFactoryProperty(ONSFactoryProperty::MsgContent, "XXX");
    // Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi. 
    // ID AccessKey yang digunakan untuk autentikasi. 
    factoryInfo.setFactoryProperty(ONSFactoryProperty::AccessKey, getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"));
		// Rahasia AccessKey yang digunakan untuk autentikasi. 
    factoryInfo.setFactoryProperty(ONSFactoryProperty::SecretKey, getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));


    //buat produsen;
    Producer *pProducer = ONSFactory::getInstance()->createProducer(factoryInfo);

    // Sebelum Anda mengirim pesan, panggil metode start() hanya sekali untuk memulai produsen. 
    pProducer->start();

    Message msg(
            // Topik tempat pesan normal diproduksi. Topik yang digunakan untuk mengirim dan menerima pesan normal tidak dapat digunakan untuk mengirim atau menerima pesan dari jenis lain. 
            factoryInfo.getPublishTopics(),
            // Tag pesan. Tag pesan mirip dengan tag Gmail dan digunakan oleh konsumen untuk menyaring pesan di broker ApsaraMQ for RocketMQ.        
            "TagA",
            // Tubuh pesan. Parameter ini tidak boleh kosong. ApsaraMQ for RocketMQ tidak memproses tubuh pesan. Produsen dan konsumen harus menyetujui metode yang digunakan untuk serialisasi dan deserialisasi tubuh pesan. 
            factoryInfo.getMessageContent()
    );

    // Kunci pesan. Kunci adalah atribut spesifik bisnis dari pesan dan harus unik secara global jika memungkinkan. 
    // Jika Anda tidak dapat menerima pesan seperti yang diharapkan, Anda dapat menggunakan kunci untuk mencari pesan di konsol ApsaraMQ for RocketMQ. 
    // Catatan: Anda dapat mengirim dan menerima pesan bahkan jika Anda tidak menentukan kunci. 
    msg.setKey("ORDERID_100");

    // Kirim pesan. Jika tidak ada pengecualian yang dilemparkan, pesan dikirim.      
    try
    {
        SendResultONS sendResult = pProducer->send(msg);
    }
    catch(ONSClientException & e)
    {
        // Tentukan logika untuk menangani pengecualian. 
    }
    // Sebelum Anda keluar dari aplikasi Anda, hancurkan produsen. Jika Anda tidak menghancurkan produsen, masalah seperti kebocoran memori mungkin terjadi. 
    pProducer->shutdown();

    return 0;
}

Berlangganan pesan normal

Untuk instruksi dan contoh kode tentang cara berlangganan pesan normal menggunakan SDK klien TCP untuk C atau C++, lihat Berlangganan Pesan.