Cơ chế bền vững của RabbitMQ bao gồm bền vững hàng đợi, bền vững tin nhắn và bền vững trao đổi. Cho dù tin nhắn có bền vững hay không, nó có thể được ghi vào đĩa.

Tin nhắn bền vững được ghi cả vào đĩa và bộ nhớ (để tăng tốc độ đọc), trong khi tin nhắn không bền vững chỉ được ghi vào đĩa khi bộ nhớ không đủ (chúng sẽ bị mất sau khi RabbitMQ khởi động lại).

Bền vững hàng đợi RabbitMQ

Khi khai báo một hàng đợi, bạn có thể thiết lập xem hàng đợi cần phải được bền vững hay không. Trong Golang, hàng đợi được khai báo như sau:

q, err := ch.QueueDeclare(
  "hello", // tên hàng đợi
  true,   // xác định liệu hàng đợi có cần được bền vững không
  false,
  false,
  false,
  nil,
)

Mẹo: Tương tự như các ngôn ngữ lập trình khác, bạn có thể cài đặt hàng đợi khi khai báo nó.

Bền vững trao đổi RabbitMQ

Khi khai báo một trao đổi, bạn có thể thiết lập liệu nó cần phải được bền vững bằng cách sử dụng các thuộc tính. Trong Golang, nó được khai báo như sau:

err = ch.ExchangeDeclare(
        "tizi365",   // tên trao đổi
        "fanout", // loại trao đổi
        true,     // liệu nó có cần phải bền vững không
        false,    
        false,   
        false, 
        nil, 
    )

Mẹo: Tương tự như các ngôn ngữ lập trình khác, bền vững có thể được cài đặt khi khai báo trao đổi.

Bền vững tin nhắn RabbitMQ

Khi xuất bản một tin nhắn, bạn có thể thiết lập liệu tin nhắn cần phải được bền vững thông qua các thuộc tính tin nhắn.

Mẹo: Bền vững của hàng đợi không có nghĩa là tin nhắn được tự động bền vững.

Trong Golang, các tin nhắn được xuất bản như sau:

err = ch.Publish(
			"tizi365",     // trao đổi
			"", // key định tuyến
			false, 
			false,
			amqp.Publishing{
				DeliveryMode:2,  // chế độ giao hàng của tin nhắn, 1 là không bền vững, 2 là bền vững
				ContentType: "text/plain",
				Body:        []byte(body),
			})