0
votes

I have been reading on JMS, ActiveMQ and Camel.

From my understanding, if we need to integrate multiple system where integration involves only routing of messages in same format, activeMQ is sufficient else we can opt for camel.

Now incase of message redelivery expiration caused by some exception or transaction rollback, activeMQ sends the failed message to dead letter queue. We are not using Apache camel as activeMQ is sufficient for our requirements but should I opt for camel if I want to monitor and audit the failed messages or will it add an overhead ? I have not used camel before so if someone can direct me how to monitor dead letter messages. We are thinking of having dead letter queue for each of our topic or queue and provide audit logs for client.

1

1 Answers

3
votes

Depends. What do you want to do with DLQ messages? How many errors do you anticipate?

If the error rate is very low and it's hard to predict what to do with errors, maybe some alert could trigger a human to look at the DLQ message on DLQ to figure out what to do with it. Retry? File a bug report? Call someone?

To monitor DLQs you could use JMX or it's http equivalent, Jolokia, to monitor the queues and send an alert if the queue size is more than zero.

You can of course use Apache Camel to somehow process the dead message. Like send it in an email, save it to an error reporting system or take other action to alert a user, use different logic to process the message or what not. This logic you can write in any framework, not just Apache Camel. But Camel is a decent choice.

Anyhow, there is no silver bullet for DLQ management. You must build a system that (manual or automatic) that fits your needs and limits.