Jms 限制ActiveMQ中特定队列的大小
有没有办法限制ActiveMQ中队列的大小。就像我有四个队列:Q1、Q2、Q3、Q4,我想当Q3有200MB的消息时,它应该阻止,直到所有消息都没有被消耗,但其他Q1、Q2、Q4功能正常。你可以这样做,但你必须分步执行 有不同类型的内存,如普通内存“RAM”或持久存储中的磁盘空间。您必须单独配置它们。因为当“RAM”内存用完时,消息会被调出并从存储器中取出(取决于配置) 但是,您希望有一个系统范围的限制,如下所示:Jms 限制ActiveMQ中特定队列的大小,jms,activemq,Jms,Activemq,有没有办法限制ActiveMQ中队列的大小。就像我有四个队列:Q1、Q2、Q3、Q4,我想当Q3有200MB的消息时,它应该阻止,直到所有消息都没有被消耗,但其他Q1、Q2、Q4功能正常。你可以这样做,但你必须分步执行 有不同类型的内存,如普通内存“RAM”或持久存储中的磁盘空间。您必须单独配置它们。因为当“RAM”内存用完时,消息会被调出并从存储器中取出(取决于配置) 但是,您希望有一个系统范围的限制,如下所示: <systemUsage> <system
<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..然后就可以了..也许需要调整命名约定才能实现这一点。你应该编辑你以前的帖子,而不是再次发布本质上相同的内容。