2014-07-25 19 views

Trả lời

16

Không có đối số x-message-ttl được đặt theo mặc định từ phía nhà môi giới, vì vậy về cơ bản bạn có thể hiểu giá trị mặc định là vô cùng.

Nếu bạn xuất bản thông điệp mà không ttl phải xếp hàng mà không ttl bộ (yupp, có mỗi tin nhắn và mỗi hàng đợi đối số ttl, xem lưu ý dưới đây):

  • nếu thông điệp được công bố như dai dẳng và hàng đợi công bố như thông điệp liên tục sẽ ở trong hàng đợi miễn là nó sẽ không bị tiêu thụ;

  • nếu thư không được xuất bản dưới dạng liên tục hoặc hàng đợi không được khai báo là liên tục, thì thư sẽ vẫn nằm trong hàng đợi miễn là nó sẽ không được sử dụng hoặc cho đến khi người môi giới khởi động lại.

TTL lưu ý:

Khi cả hai môi giới cho mỗi tin nhắn và thiết lập ttl mỗi hàng đợi sử dụng thung lũng tối thiểu. Ví dụ, nếu ttl cho mỗi tin nhắn là 10000 (10 giây) và ttl mỗi hàng đợi là 20000 (20 giây) thì ttl cho mỗi tin nhắn sẽ được áp dụng.

Ghi chú TTL cho mỗi tin nhắn:

Tin nhắn với ttl hết hạn sẽ vẫn nằm trong hàng miễn là chúng không đạt đến đầu xếp hàng. Đừng lo lắng, họ sẽ không được gửi đến người tiêu dùng, nhưng họ sẽ mất một số tài nguyên cho đến khi họ đến đầu. Đây là cách hàng đợi của RabbitMQ hoạt động (chúng gắn bó với ý tưởng FIFO, đôi khi có thể phá vỡ khả năng tương thích chặt chẽ với giao thức AMQP). Xem Caveats section in Time-To-Live Extensions để biết thêm.

+2

Tin nhắn nằm trong hàng đợi cho đến khi chúng "tiếp cận hàng đợi" nhưng cho đến khi chúng được gửi tới người tiêu dùng và được thừa nhận hoặc bị từ chối (không xếp lại hàng). Với chế độ xác nhận tự động, điều này có nghĩa là "ngay khi chúng được gửi đi". Hàng đợi AMQP 0-9-1 là FIFO nhưng với việc xếp lại hàng này thì không rõ cách thức hoạt động của nó. RabbitMQ cố gắng giữ lại thứ tự thư gốc. –

+0

Khi TTL trên mỗi tin nhắn hết hạn, tin nhắn đó sẽ không bị xóa khỏi hàng đợi (nó vẫn sử dụng một số tài nguyên như bộ nhớ hoặc đĩa) cho đến khi nó không đạt được đầu hàng đợi. Xem rabbitmq.com/ttl.html#per-message-ttl-caveats để biết chi tiết. Và với việc xếp hàng lại nó cũng rất rõ ràng, các tin nhắn không bị xóa khỏi hàng đợi cho đến khi chúng được ack'ed (khi auto-ack sử dụng chúng ack'ed tự động trên môi giới bên, bất kể chúng thực sự được tiêu thụ bởi khách hàng). – pinepain

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