Очистить JBoss DLQ
Кто-нибудь знает, как очистить DeadLetterQueue от jBoss? Когда я запускаю jBoss, он ждет 4 минуты по адресу:
12:09:06,281 INFO [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=DefaultDS' to JNDI name 'java:DefaultDS'
и другие 4 мин при:
[DLQ] () Bound to JNDI name: queue/DLQ
и я думаю, что, вероятно, я должен очистить эту очередь.. но это не внутри jBoss...?
Кто-нибудь может помочь?
заранее спасибо.
3 ответа
Ответ, который вы нашли, удалит сообщения из всех очередей, что не всегда желательно.
Вы также можете сделать то же самое с помощью jmx, вызвав removeAllMessages() для jboss.mq.destination:name=DLQ;service=Queue mbean.
Или вы можете полностью исключить необходимость ручной очистки DLQ - в conf/jboss-service.xml добавьте <TimeToLive>86400000</TimeToLive>
к <DLQConfig>
элемент. Срок действия сообщений истечет через 1 день.
Если вы собираетесь решить эту проблему с помощью SQL, по крайней мере, убедитесь, что очереди не связаны в данный момент, и ограничьте ее до очереди недоставленных писем следующим образом:
delete from jms_messages where destination = 'DLQ';