مکانیسم دوام RabbitMQ شامل دوام صف، دوام پیام و دوام تبادل است. آیا پیام دوام دارد یا خیر، می‌تواند بر روی دیسک نوشته شود.

پیام‌های دوام دار همزمان بر روی دیسک و حافظه نوشته می‌شوند (برای سرعت در خواندن) در حالی که پیام‌های غیر دوام دار وقتی حافظه کافی نباشد، بر روی دیسک نوشته می‌شوند (پس از راه‌اندازی مجدد RabbitMQ از بین می‌روند).

دوام صف RabbitMQ

هنگام تعریف یک صف، می‌توانید تنظیم کنید که آیا صف باید دوام داشته باشد یا خیر. در زبان Golang، صف به صورت زیر تعریف می‌شود:

q, err := ch.QueueDeclare(
  "hello", // نام صف
  true,   // آیا صف باید دوام داشته باشد
  false,
  false,
  false,
  nil,
)

نکته: مشابه زبان‌های برنامه‌نویسی دیگر، هنگام تعریف صف می‌توان آن را تنظیم کرد.

دوام تبادل RabbitMQ

هنگام تعریف یک تبادل، می‌توانید از طریق ویژگی‌ها تنظیم کنید که آیا باید دوام داشته باشد یا خیر. در زبان Golang، به صورت زیر تعریف می‌شود:

err = ch.ExchangeDeclare(
        "tizi365",   // نام تبادل
        "fanout", // نوع تبادل
        true,     // آیا باید دوام داشته باشد
        false,    
        false,   
        false, 
        nil, 
    )

نکته: مشابه زبان‌های برنامه‌نویسی دیگر، می‌توان دوام را هنگام تعریف تبادل تنظیم کرد.

دوام پیام RabbitMQ

هنگام انتشار یک پیام، می‌توانید تنظیم کنید که آیا پیام باید دوام داشته باشد یا خیر از طریق ویژگی‌های پیام.

نکته: دوام صف به معنی خودکار بودن دوام پیام نمی‌باشد.

در Golang، پیام‌ها به صورت زیر منتشر می‌شوند:

err = ch.Publish(
			"tizi365",     // تبادل
			"", // کلید مسیریابی
			false, 
			false,
			amqp.Publishing{
				DeliveryMode:2,  // حالت تحویل پیام، 1 برای غیر دوام، 2 برای دوام دار
				ContentType: "text/plain",
				Body:        []byte(body),
			})