2015-01-05 3 views
1

Есть ли способ ограничить размер очереди в ActiveMQ. Как и у меня есть четыре очереди: Q1, Q2, Q3, Q4, и я хочу, чтобы Q3 имел 200 МБ сообщений, которые он должен блокировать до тех пор, пока сообщения не будут потребляться, но другие Q1, Q2, Q4 нормально функционируют.Ограничение размера конкретной очереди в ActiveMQ

ответ

1

Вы можете сделать это, но вам нужно сделать это пошагово.

Существуют различные типы памяти, такие как обычная память «ОЗУ» или дисковое пространство в постоянном хранилище. Вы должны настроить их отдельно. Поскольку, когда память «ОЗУ» отсутствует, сообщение выгружается и извлекается из хранилища (в зависимости от бит конфигурации).

Однако, у вас есть, надеюсь, широкий предел системы, как это:

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

Учитывая эти записи в качестве отправной точки, вы можете применить per-destination-policies, которые ограничивают определенной очереди (ы). Это устанавливается в процентах от системной памяти, поэтому вам нужно выполнить некоторые вычисления. Используйте storeUsageHighWaterMark и/или cursorMemoryHighWaterMark в зависимости от эффекта, который вы хотите. Обратите внимание, что хранилище не используется для непостоянных сообщений.

Для ограничения основной памяти вы также можете использовать параметр memoryLimit в политике назначения. Это ребенок к системному свойству memoryUsage.

+0

не это на уровне брокера? как предполагается, на уровень очереди? , поэтому он будет применим ко всем очередям, а не к определенной очереди – Vihar

+1

Это параметры политики назначения, поэтому вы обычно настраиваете политику типа '', Чтобы она охватывала все очереди, начиная с ORDERS и т. Д. Затем примените ограничения памяти для этой очереди (или набора очередей). –

+0

ohh..then it works..maybe настройка именования соглашение будет необходимо для достижения этого – Vihar

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

не ограничивает размер очереди до 12 кб

+1

Вы должны отредактировать свой предыдущий пост вместо того, чтобы отправлять по существу то же самое снова. –

Смежные вопросы