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

Reply via email to