Configurei uma implantação Artemis baseada no operador Kubernetes para
- Use DLQs individuais por fila com o prefixo "DLQ".
- Criação automática de recursos deadLetter
Isso funciona bem. Se uma mensagem exceder o máximo de tentativas de entrega, ela será movida para o DLQ de sua fila.
No entanto, no Artemis há um DLQ
endereço padrão que contém uma DLQ
fila padrão . Todos os DLQs específicos criados automaticamente são adicionados a esse DLQ
endereço. Então ele contém a fila padrão chamada DLQ
e qualquer número de DLQs específicos chamados DLQ.[queuename]
.
Os DLQs específicos são criados automaticamente com um filtro que inclui apenas mensagens com a fila específica como origem, por exemplo _AMQ_ORIG_ADDRESS = 'testqueue'
. Até agora, tudo bem.
Mas o problema que encontro é que mensagens com falha de testqueue
não são apenas movidas para DLQ.testqueue
, mas também são copiadas paraDLQ
. A mesma mensagem está em 2 DLQs diferentes. Isso é razoável porque a mensagem é enviada para cada fila do endereço que não a exclui e, como o DLQ padrão não tem filtro, ele pega todas as mensagens.
Primeiro pensei que fosse apenas 1 mensagem visível em 2 filas, mas não importa se eu excluo a mensagem em DLQ
ou DLQ.testqueue
, ela não é excluída da outra. Essas são realmente 2 mensagens.
Agora acho que terei que remover o DLQ padrão do Artemis que está configurado no broker.xml.
Mas como posso fazer isso? O operador mescla uma configuração padrão com a minha configuração e não vejo uma maneira óbvia de "sobrescrever" as definições de endereço padrão com nada.
Posso adicionar CRs do tipo ActiveMQArtemisAddress
para criar endereços e filas, mas não vejo como remover os endereços padrão.
Obrigado por qualquer ajuda.
Os endereços e filas padrão podem ser removidos da configuração usando as propriedades do broker no ActiveMQArtemis CR, ou seja
Quando a persistência estiver habilitada ou quando o broker já estiver em execução, a fila também deverá ser excluída das vinculações do diário, usando o artemis CLI ou a API de gerenciamento, ou seja