I evaluating to use Artemis for a project and I'm reading documentation to check if we can manage our use cases well and investigating the best way to implement them. I write the present mail to expose the use cases and receive opinions about if Artemis is a good match and the approach I've in mind is the best or there are better alternatives.
***Uses cases*** All the use cases are mainly for managing integrations with external applications/services. **1** Having consumer exponential backoff retries with final retry delays up to some days. Approach: I've seen that this is configurable by delayed redelivery configuration **2** Searchable message history, for pending messages, processed ones, and discarded with errors. Being able to search by time ranges and some message properties. Approach: Use a custom database table to store one register per message I've seen that there is some API to query messages, but there are problems with consumer buffering and making searches, and especially the message history, although it seems possible, it doesn't seem to fit very well, do it? Is a custom table the best approach? Is there any OSS complimentary product that fits well with ActiveMQ and can provide history and search options nicely **3** Strictly ordering between messages for the same queue and property. For example, a queue to manage status changes from invoices where we need to ensure that all status changes for the same invoice are processed in order. And that if some message is not delivered due to errors, others from the same invoice must wait until the first is processed while letting messages from other invoices to be processed. Approach: In the beginning, it seems that Message groups should help, but when there is redelivery or a scheduled message it doesn't seem to work as expected because the redelivery is processed after other messages priorly queued after the redelivered message. Is that correct? If that doesn't work as expected for redeliveries a possibility will be to use the table from (2) to store dependent messages and have a processor listener in the queue to check in the table if there are some more dependent messages and process them. Another option could be a queue for the invoice, but this is not the expected usage of queues, is it? Because I will need that queues would be very cheap and have something like a multitopic subscription for consumers. -- Sent from: http://activemq.2283324.n4.nabble.com/ActiveMQ-User-f2341805.html