2012-07-18 37 views
10

Chúng tôi sử dụng cấu hình sau đây cho AMQLàm thế nào để cấu hình ActiveMQ đúng cách?

<bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> 
    <property name="brokerURL" value="${brokerURL1}"/> 
</bean> 
<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"> 
    <property name="maxConnections" value="10"/> 
    <property name="maximumActive" value="100"/> 
    <property name="connectionFactory" ref="jmsConnectionFactory"/> 
</bean> 
<bean id="jmsConfig" class="org.apache.camel.component.jms.JmsConfiguration"> 
    <property name="connectionFactory" ref="pooledConnectionFactory"/> 
    <property name="transacted" value="false"/> 
    <property name="concurrentConsumers" value="5"/> 
    <property name="maxConcurrentConsumers" value="10"/> 
</bean> 

<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent"> 
    <property name="configuration" ref="jmsConfig"/> 
</bean> 

kỳ lạ Tôi có vấn đề - thông điệp lỏng lẻo. Trên thực tế AMQ nói tất cả mọi thứ OK và thông điệp được dequeued nhưng không có tin nhắn trên ứng dụng ...

Tôi đã đọc nó có thể là vấn đề với người tiêu dùng bộ nhớ đệm và thay vào đó JmsConfiguration nên được sử dụng sau đây cấu hình

<bean id="jmsConfig" class="org.apache.activemq.camel.component.ActiveMQConfiguration"> 
    <property name="connectionFactory" ref="pooledConnectionFactory"/> 
    <property name="transacted" value="false"/> 
    <property name="concurrentConsumers" value="5"/> 
    <property name="maxConcurrentConsumers" value="10"/> 
    <property name="cacheLevelName" value="CACHE_CONSUMER"/> 
</bean> 

Liệu ai biết làm thế nào để đúng cách để cấu hình activemq? giá trị nào nên được đặt cho hiệu suất tốt nhất và độ tin cậy tốt?

<property name="maxConnections" value="?"/> 
<property name="maximumActive" value="?"/> 
<property name="concurrentConsumers" value="?"/> 
<property name="maxConcurrentConsumers" value="?"/> 

Tôi có nên sử dụng org.apache.activemq.pool.PooledConnectionFactory hoặc có cách tiếp cận tốt hơn không?

Trả lời

5

Có vẻ như bạn đang hỏi thêm về cách cấu hình Apache Camel cách sử dụng ActiveMQ.

Có nhiều cách để định cấu hình tổng hợp vv tùy thuộc vào cách sử dụng/mẫu tải bạn thấy trong quá trình thiết lập và yêu cầu của bạn là gì. Những cài đặt bạn đang tham chiếu đến maxConcurrentConsumers, vv sẽ phụ thuộc vào tuyến đường Camel của bạn và số lượng người tiêu dùng bạn thiết lập ở đó chẳng hạn.

Đơn giản, có hai kịch bản để tối ưu hóa cho: Gửi và nhận tin nhắn (yêu cầu/trả lời cũng được đề cập đến, nhưng đó là một câu chuyện khác).

Nếu bạn nhận được nhiều tin nhắn trong ứng dụng, thì bạn thường thiết lập người nghe tin nhắn và tổng hợp không có nhiều trợ giúp, vì bạn không tạo/rớt nhiều kết nối/phiên. Chỉ cần chắc chắn rằng bạn cấu hình đủ người tiêu dùng đồng thời - bao nhiêu phụ thuộc vào phần cứng của bạn (lõi CPU # vv) và kích thước của mỗi tin nhắn. Bạn phải đo lường thiết lập cụ thể của mình để có hiệu suất tốt nhất.

Khi bạn gửi tin nhắn, Camel suggests the PooledConnectionFactory của ActiveMQ như bạn nói. Tài liệu được liên kết cũng đề xuất một số giá trị mặc định cho cài đặt bạn đang yêu cầu.

<property name="maxConnections" value="8" /> 
    <property name="maximumActive" value="500" /> 
    <property name="transacted" value="false"/> 

Đối với tối đa độ tin cậy, bạn nên sử dụng phiên giao dịch và cam kết thông điệp nhận được một khi bạn có nó một cách an toàn xử lý.

Thật lạ khi bạn nói rằng bạn bị mất tin nhắn, không có bất kỳ điều gì cụ thể trong cài đặt của bạn khiến bạn mất tin nhắn. Bạn cần phải theo dõi điều này xuống một chút tương lai hoặc cung cấp một số thông tin về việc triển khai ứng dụng.

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