2013-08-21 39 views
73
  1. Thông điệp nào có thể được lưu trữ trong hàng đợi RabbitMQ? Chỉ có chuỗi? Hoặc tôi có thể chọn loại tôi muốn lưu trữ: int, binary, string, vv?
  2. Kích thước tối đa của một thư là gì?
  3. Có thể tạo bao nhiêu hàng đợi hoặc trao đổi? Hay nó phụ thuộc vào sức mạnh của máy chủ?

Trả lời

88
  1. Về mặt lý thuyết, mọi thứ đều có thể được lưu trữ/gửi dưới dạng tin nhắn. Bạn thực sự không muốn lưu trữ bất cứ điều gì trên hàng đợi. Hệ thống hoạt động hiệu quả nhất nếu hàng đợi trống hầu hết thời gian. Bạn có thể gửi bất cứ điều gì bạn muốn vào hàng đợi với hai điều kiện tiên quyết:

    • Điều bạn đang gửi có thể được chuyển đổi sang và từ một bytestring
    • Người tiêu dùng biết chính xác những gì nó là nhận được và làm thế nào để chuyển đổi nó sang đối tượng gốc

    Strings là khá dễ dàng, họ có một xây dựng trong phương pháp để chuyển đổi đến và đi từ byte. Nếu bạn biết nó là một chuỗi thì bạn biết cách chuyển đổi nó trở lại. Tùy chọn tốt nhất là sử dụng chuỗi đánh dấu như XML, JSON hoặc YML. Bằng cách này bạn có thể chuyển đổi các đối tượng thành Strings và ngược lại thành các đối tượng gốc; họ làm việc trên các ngôn ngữ lập trình để người tiêu dùng của bạn có thể được viết bằng một ngôn ngữ khác cho nhà sản xuất của bạn miễn là nó biết cách hiểu đối tượng. Tôi làm việc trong Java. Tôi muốn gửi các thông điệp phức tạp với các đối tượng con trong các trường. Tôi sử dụng đối tượng tin nhắn của riêng mình. Đối tượng tin nhắn có hai phương thức bổ sung là toBytesfromBytes chuyển đổi sang và từ luồng. Tôi sử dụng các phím định tuyến để không nghi ngờ gì về loại thông điệp mà người tiêu dùng nhận được. Tin nhắn có thể được Serializable. Điều này hoạt động tốt, nhưng hạn chế vì tôi chỉ có thể sử dụng nó với các chương trình Java khác.

  2. Kích thước của thông báo bị giới hạn bởi bộ nhớ trên máy chủ và nếu nó liên tục thì cũng có dung lượng ổ cứng trống. Có thể bạn không muốn gửi tin nhắn quá lớn; nó có thể là tốt hơn để gửi một tham chiếu đến một tập tin hoặc DB.

    Bạn cũng có thể muốn đọc lên về các biện pháp thực hiện của họ: http://www.rabbitmq.com/blog/2012/04/17/rabbitmq-performance-measurements-part-1/ http://www.rabbitmq.com/blog/2012/04/25/rabbitmq-performance-measurements-part-2/

  3. Queues là trọng lượng khá nhẹ, bạn sẽ hầu như bị giới hạn bởi số lượng kết nối mà bạn có. Nó sẽ phụ thuộc vào máy chủ rất có thể. Dưới đây là một số thông tin về một câu hỏi tương tự: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2009-February/003042.html

2
  1. Xem robthewolf's answer.

  2. Kích thước thư tối đa là 2GB, tuy nhiên, điều chỉnh hiệu suất cho các thư có kích thước này không hiệu quả. Max Message Size

  3. Không có giới hạn cứng áp đặt bởi phần mềm RabbitMQ Server trên số lượng hàng đợi, tuy nhiên, phần cứng máy chủ đang chạy trên có thể rất tốt ảnh hưởng đến giới hạn này.

3a.Không có giới hạn độ dài hàng đợi do máy chủ áp đặt theo mặc định. Tuy nhiên, bạn có thể giới hạn điều này thông qua chính sách phía máy chủ (cấu hình) hoặc chính sách phía máy khách. Max Queue Length

Có thêm thông tin và liên kết trên related post.

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