javax.jms.ResourceAllocationException: Usage Manager Memory Limit reached

错误:

javax.jms.ResourceAllocationException: Usage Manager Memory Limit reached
 <systemUsage>
          <systemUsage sendFailIfNoSpaceAfterTimeout="2000">
            <memoryUsage>
              <memoryUsage limit="52 mb" />
            </memoryUsage>
            <storeUsage>
              <storeUsage limit="10 gb" />
            </storeUsage>
            <tempUsage>
              <tempUsage limit="5 gb" />
            </tempUsage>
          </systemUsage>
        </systemUsage>


解决方案:

根据每个队列配置的内存之和来定义memoryUsage的值

 <persistenceAdapter>
                                        <!-- 队列中消息数据略大,消息产生次数少,不频繁,可丢失;此队列由DTS-SERVER消费,如果DTS-SERVER宕机后,无法消费此队列则-->
                                        <!-- 当队列内存占满后,消息保存到文件系统-->
                    <policyEntry queue="com.yougou.logistics.dts.client_error_queue" queuePrefetch="100" producerFlowControl="true" memoryLimit="20mb">

                        <pendingQueuePolicy>
                            <fileQueueCursor/>
                        </pendingQueuePolicy>
                        <deadLetterStrategy>
                            <sharedDeadLetterStrategy processNonPersistent="false" />
                        </deadLetterStrategy>
                    </policyEntry>


                  <policyEntry queue="com.yougou.logistics.dts.logger_queue" queuePrefetch="100" producerFlowControl="true" memoryLimit="5mb">

                        <pendingQueuePolicy>
                            <vmQueueCursor/>
                        </pendingQueuePolicy>
                        <deadLetterStrategy>
                            <sharedDeadLetterStrategy processNonPersistent="false" />
                        </deadLetterStrategy>
                    </policyEntry>


你可能感兴趣的:(activemq内存问题)