Setting RabbitMQ (Durable, Auto Delete dan Ack)

Durable

RabbitMQ akan menghapus queue dan pesan saat berhenti atau crash. Hal tersebut dapat dihindari dengan mengaktifkan message durability pada bagian QueueDeclare di sender.go atau publisher.go menjadi true. Dengan begitu pesan dan queue pada RabbitMQ akan dapat bertahan saat RabbitMQ di restart.

        q, err := ch.QueueDeclare(
		"hello", // name
		false,   // durable
		false,   // delete when unused
		false,   // exclusive
		false,   // no-wait
		nil,     // arguments
	)

Auto Delete

Auto delete merupakan setting dari RabbitMQ yang memungkinkan queue yang tidak terpakai akan langsung di delete. Setting auto delete bisa dilakukan dari sisi publisher atau consumer pada code QueueDeclare.

        q, err := ch.QueueDeclare(
		"task_queue", // name
		true,         // durable
		false,        // auto delete queue when unused
		false,        // exclusive
		false,        // no-wait
		nil,          // arguments
	)
	failOnError(err, "Failed to declare a queue")

Acknowledge

AutoAck bisa di setting di code receiver atau consumer pada bagian Consume.

        msgs, err := ch.Consume(
		q.Name, // queue
		"",     // consumer
		true,   // auto-ack
		false,  // exclusive
		false,  // no-local
		false,  // no-wait
		nil,    // args
	)
	failOnError(err, "Failed to register a consumer")
  • Case 1, auto-ack di set true, maka hasil running consumer dan publisher akan seperti video di bawah ini. Publisher tidak akan peduli, apakah consumer mati atau hidup, data akan tetap dikirim.

  • Case 2, auto-ack di set false dan d.Ack(false)

  • Case 3, auto-ack di set false dan tidak ada d.Ack

Last updated