2011-10-04 22 views
5

Tìm kiếm một số trợ giúp xung quanh cấu hình hệ thốngTùy chỉnh và đích đến vì tôi gặp khó khăn trong việc hiểu rõ mối quan hệ giữa systemUsage, destinationPolicy và kiểm soát luồng.ActiveMQ destinationPolicy và systemUsage Configuration

Tất cả tin nhắn của chúng tôi đều liên tục! producerFlowControl đang bật.

Vì vậy, chúng tôi cung cấp cho ActiveMQ mức tối đa 512MB.

systemUsage của chúng tôi được thiết lập như bên dưới:

<systemUsage> 
    <systemUsage> 
     <memoryUsage> 
      <memoryUsage limit="200 mb"/> 
     </memoryUsage> 
     <storeUsage> 
      <storeUsage limit="10 gb"/> 
     </storeUsage> 
     <tempUsage> 
      <tempUsage limit="1000 mb"/> 
     </tempUsage> 
    </systemUsage> 
</systemUsage> 

chính sách điểm đến của chúng tôi như sau:

<destinationPolicy> 
    <policyMap> 
     <policyEntries> 
     <policyEntry topic=">" producerFlowControl="true" memoryLimit="1mb"> 
      <pendingSubscriberPolicy> 
      </pendingSubscriberPolicy> 
     </policyEntry> 
     <policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb"> 
     </policyEntry> 
     </policyEntries> 
    </policyMap> 
</destinationPolicy> 

thể ai kiểm tra nếu sau đây là đúng:

Điều này có nghĩa rằng đối với mỗi hàng đợi/chủ đề riêng lẻ giới hạn bộ nhớ là 1MB. Chính xác những gì xảy ra khi 1MB này được nhấn, khối hàng đợi cho nhà sản xuất hay nó trang vào đĩa?

Tổng bộ nhớ được phép cho tất cả các hàng đợi và chủ đề là 200MB. Có nghĩa là chúng tôi có thể có 200 kênh hoạt động hết công suất 1MB. Chúng tôi hiện có 16 hàng đợi và chủ đề trong tổng số vì vậy rõ ràng là không bao giờ đạt được.

Chúng ta có thể xóa mục nhập chính sách riêng lẻ trên giới hạn bộ nhớ và chia sẻ bộ nhớ giữa các kênh khác nhau không?

Nếu chúng tôi thực hiện việc này vào thời điểm nào họ sẽ chặn?

Bất kỳ trợ giúp nào được đánh giá cao! Có thể paypal bạn một số tiền bia!

Trả lời

6

Bạn đang chạm vào một số điểm ở đây, thứ tôi sẽ trả lời không đúng thứ tự.

bộ nhớSử dụng tương ứng với lượng bộ nhớ được gán cho cửa hàng trong bộ nhớ. storeUsage tương ứng với bao nhiêu không gian nên được trao cho cửa hàng KahaDB. Bạn có thể sử dụng cái này hay cái kia, tùy thuộc vào cách bạn muốn người môi giới của bạn duy trì tin nhắn hay không. tempUsage là một trường hợp đặc biệt cho các con trỏ tập tin (http://activemq.apache.org/message-cursors.html) - một cơ chế để tràn bộ nhớ từ bộ nhớ trong vào đĩa nếu giới hạn bộ nhớ bị vượt quá (bạn phải cấu hình hành vi này ở cấp độ đích nếu bạn muốn nó).

policyEntry @ memoryLimit là giới hạn phụ cho các đích đến riêng lẻ.

Điều gì sẽ xảy ra khi vượt quá giới hạn bộ nhớ tùy thuộc vào việc điều khiển luồng sản xuất (PFC) có được bật hay không. Nó được bật theo mặc định cho hàng đợi, tắt cho các chủ đề và không đồng bộ gửi đến hàng đợi; tất cả điều này có thể được cấu hình trong policyEntry (http://activemq.apache.org/per-destination-policies.html).

Nếu bạn nhấn "giới hạn bộ nhớ" khi PFC bật, khách hàng của bạn sẽ chặn cho đến khi ai đó giải phóng dung lượng bằng cách tiêu thụ thư từ cửa hàng. Nếu nó tắt, việc gửi sẽ ném một ngoại lệ (tốt hơn khách hàng rơi hơn so với các nhà môi giới). "Giới hạn bộ nhớ" nghĩa là bộ nhớ được xác định bởi memoryUsage trên tất cả các hàng đợi hoặc giới hạn hàng đợi cụ thể (có thể nhấn vào giới hạn trước đó).

Có hay không bạn muốn giới hạn đích cụ thể tùy thuộc vào trường hợp sử dụng của bạn. Tôi muốn đề nghị bỏ qua nó trừ khi bạn đang cố gắng để đạt được một kết quả cụ thể.

+0

Như một lưu ý, nếu bạn đạt đến giới hạn bộ nhớ, hàng đợi cũng xuất hiện "trống" đối với người tiêu dùng đã giao dịch, cho đến khi người khác giải phóng dung lượng. Ngoài ra - con trỏ chỉ hữu ích về cơ bản cho "lưu trữ các thư không liên tục nếu bạn hết bộ nhớLimit", đúng không? – rogerdpack

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