Untuk melacak dan mengidentifikasi pesan, Anda dapat menentukan ID unik untuk setiap pesan pada klien produser ApsaraMQ for RabbitMQ. Topik ini menjelaskan definisi ID pesan serta cara menentukannya.
Apa itu ID pesan?
ID pesan adalah atribut pesan opsional bertipe string pendek. Dalam sebagian besar skenario bisnis, ID berfungsi sebagai pengenal unik sebuah pesan. Anda dapat menggunakan ID pesan untuk melacak dan mengidentifikasi pesan dalam skenario seperti pelacakan pesanan dan pemrosesan tiket. Broker ApsaraMQ for RabbitMQ tidak menjamin idempotensi konsumsi pesan. Idempotensi konsumsi berarti bahwa jika sebuah pesan dikirim ke konsumen beberapa kali, hasil dari beberapa operasi konsumsi sama dengan hasil dari satu operasi konsumsi, tanpa dampak negatif pada aplikasi bisnis. Untuk memastikan idempotensi konsumsi pesan, Anda harus menentukan ID unik untuk setiap pesan dan mengonfigurasi parameter yang diperlukan untuk menerapkan konsumsi idempoten pada klien konsumen ApsaraMQ for RabbitMQ. Untuk informasi lebih lanjut, lihat Idempotensi Pesan.
Metode konfigurasi
Pada klien produser ApsaraMQ for RabbitMQ, konfigurasikan parameter message-id dari field Basic.Properties. Contoh kode:
Java
AMQP.BasicProperties props = new AMQP.BasicProperties.Builder().messageId("messageid").build();
channel.basicPublish("${ExchangeName}", "RoutingKey", true, props, ("Message body").getBytes(StandardCharsets.UTF_8));Python
properties = pika.BasicProperties(app_id='example-publisher', content_type='application/json', message_id='messageid')PHP
$msg = new AMQPMessage($msgBody, ['application_headers'=>$amqpTable,'content_type' => 'text/plain', 'delivery_mode' => 2,'message_id' => 'messageid',]);Go
err = ch.Publish( "helloExchange", "hello", false, false, amqp.Publishing { ContentType: "text/plain", Body: []byte(body), MessageId: "messageId", })Node.js
channel.BasicPublish(exchange: "", routingKey: "hello", basicProperties: null, body: body);