Jms 限制ActiveMQ中特定队列的大小

Jms 限制ActiveMQ中特定队列的大小,jms,activemq,Jms,Activemq,有没有办法限制ActiveMQ中队列的大小。就像我有四个队列:Q1、Q2、Q3、Q4,我想当Q3有200MB的消息时,它应该阻止,直到所有消息都没有被消耗,但其他Q1、Q2、Q4功能正常。你可以这样做,但你必须分步执行 有不同类型的内存,如普通内存“RAM”或持久存储中的磁盘空间。您必须单独配置它们。因为当“RAM”内存用完时,消息会被调出并从存储器中取出(取决于配置) 但是,您希望有一个系统范围的限制,如下所示: <systemUsage> <system

有没有办法限制ActiveMQ中队列的大小。就像我有四个队列:Q1、Q2、Q3、Q4,我想当Q3有200MB的消息时,它应该阻止,直到所有消息都没有被消耗,但其他Q1、Q2、Q4功能正常。

你可以这样做,但你必须分步执行

有不同类型的内存,如普通内存“RAM”或持久存储中的磁盘空间。您必须单独配置它们。因为当“RAM”内存用完时,消息会被调出并从存储器中取出(取决于配置)

但是,您希望有一个系统范围的限制,如下所示:

  <systemUsage>
        <systemUsage>
            <memoryUsage>
                <memoryUsage percentOfJvmHeap="70" />
            </memoryUsage>
            <storeUsage>
                <storeUsage limit="100 gb"/>
            </storeUsage>
            <tempUsage>
                <tempUsage limit="50 gb"/>
            </tempUsage>
        </systemUsage>
    </systemUsage>

以这些条目为起点,您可以应用这些限制来限制某些队列。这被设置为系统内存的百分比,因此您需要进行一些计算。 根据需要的效果,使用
storeUsageHighWaterMark
和/或
cursorMemoryHighWaterMark
。请注意,存储区不用于非持久性消息

对于基本内存限制,还可以使用目标策略上的
memoryLit
设置。它是
memoryUsage
系统属性的子对象。


<policyEntry queue="ANOTHER.>" producerFlowControl="true" memoryLimit="12 kb">            

不将队列大小限制为12 kb,这不是在代理级别上吗?应该是队列级别吗?因此,它将适用于所有队列,而不是某些特定的队列,这些队列是按目的地策略设置的,因此您通常会设置一个策略,如
,使其覆盖从订单等开始的所有队列。然后对该队列(或一组队列)应用内存限制.ohh..然后就可以了..也许需要调整命名约定才能实现这一点。你应该编辑你以前的帖子,而不是再次发布本质上相同的内容。