Estou usando o WebSphere para servidor web e servidor de aplicativos. O servidor web se conecta ao ActiveMQ Artemis usando JMS, enquanto o servidor de aplicativos se conecta ao ActiveMQ Artemis usando um adaptador de recursos. Assim que uma solicitação chega ao servidor web, ela é enviada para uma fila do ActiveMQ Artemis e, em seguida, a solicitação é enviada ao consumidor. No entanto, quero reter essa mensagem por 10 segundos antes de ser entregue ao consumidor.
É possível conseguir isso no ActiveMQ Artemis?
Aqui estão alguns dos meus broker.xml
:
<address-settings>
<address-setting match="#">
<dead-letter-address>DLQ</dead-letter-address>
<expiry-address>ExpiryQueue</expiry-address>
<redelivery-delay>0</redelivery-delay>
<auto-create-dead-letter-resources>true</auto-create-dead-letter-resources>
<max-size-bytes>-1</max-size-bytes>
<message-counter-history-day-limit>10</message-counter-history-day-limit>
<address-full-policy>PAGE</address-full-policy>
<auto-create-queues>true</auto-create-queues>
<auto-create-addresses>true</auto-create-addresses>
<auto-create-jms-queues>true</auto-create-jms-queues>
<auto-create-jms-topics>true</auto-create-jms-topics>
<auto-delete-queues>false</auto-delete-queues>
<auto-delete-addresses>false</auto-delete-addresses>
<auto-delete-jms-queues>false</auto-delete-jms-queues>
<auto-delete-jms-topics>false</auto-delete-jms-topics>
<expiry-delay>60000</expiry-delay>
</address-setting>
É possível que o corretor "retenha" uma mensagem por um período de tempo arbitrário usando mensagens agendadas . Por exemplo, no seu código de produtor faça algo assim: