2016-07-18 16 views
7

Tôi muốn biết làm thế nào để RabbitMQ lưu trữ các thông điệp vật lý trong RAM và đĩa của nó?RabbitMQ thực sự lưu trữ thông điệp như thế nào?

Tôi biết rằng RabbitMQ cố giữ các thư trong bộ nhớ (Nhưng tôi không biết các thông điệp được đặt trong Ram) như thế nào. Nhưng các tin nhắn có thể được đổ vào đĩa khi các tin nhắn được với chế độ liên tục hoặc khi các nhà môi giới có áp lực bộ nhớ. (Nhưng tôi không biết làm thế nào các tin nhắn được lưu trữ trong Đĩa.)

Tôi muốn biết nội bộ về những điều này. Thật không may, tài liệu chính thức trên trang chủ của nó không hiển thị chi tiết nội bộ.

Tôi nên đọc tài liệu nào về điều này?

Trả lời

6

RabbitMQ usues một DB tùy chỉnh để lưu trữ các bài viết, các db thường nằm ở đây:

/var/lib/rabbitmq/mnesia/[email protected]/queues 

Bắt đầu từ hình thức phiên bản 3.5.5 RabbitMQ giới thiệu tín dụng mới mới dòng https://www.rabbitmq.com/blog/2015/10/06/new-credit-flow-settings-on-rabbitmq-3-5-5/

Chúng ta hãy xem cách hàng đợi RabbitMQ lưu trữ tin nhắn. Khi thông báo nhập vào hàng đợi, hàng đợi cần xác định xem thông báo có nên được lưu giữ lâu dài hay không. Nếu thư phải được duy trì, thì RabbitMQ sẽ làm như vậy ngay lập tức [3]. Giờ đây, ngay cả khi thư đã được lưu giữ vào đĩa, điều này không có nghĩa là thư đã bị xóa khỏi RAM, vì RabbitMQ lưu trữ bộ nhớ cache trong bộ nhớ RAM để truy cập nhanh khi gửi thư đến người tiêu dùng. Bất cứ khi nào chúng ta đang nói về phân trang thư ra đĩa, chúng ta đang nói về những gì RabbitMQ làm khi nó phải gửi thư từ bộ nhớ cache này đến hệ thống tệp.

Blog bài đăng này đủ chi tiết.

Tôi cũng đề nghị để đọc về hàng đợi lười biếng: https://www.rabbitmq.com/lazy-queues.htmlhttps://www.rabbitmq.com/blog/2015/12/28/whats-new-in-rabbitmq-3-6-0/

Lazy Queues này loại mới của hàng đợi làm việc bằng cách gửi mọi thông điệp mà được giao cho họ thẳng vào hệ thống tập tin, và chỉ tải thư trong RAM khi người tiêu dùng đến hàng đợi. Để tối ưu hóa đĩa đọc thư được tải theo lô.

+0

Xem các vị trí tệp thực tế tại đây: https://www.rabbitmq.com/relocate.html – Andy

+0

và có thể sử dụng MSMQ thay vì lưu giữ thư không? – Marco

+0

@Marco bạn có nghĩa là "Microsoft Message Queuing" không? Nói chung (ngay bây giờ) RabbitMQ không hỗ trợ cơ sở dữ liệu bên ngoài để lưu trữ các tin nhắn – Gabriele

Các vấn đề liên quan