That's a freaking awesome idea!
I have actually thought about doing something like this... but I reckoned it would require a whole project effort.
In terms of plugging something like that on HornetQ you could either have a subscription for each JMS queue and JMS topics, but that would be a bit invasive, or you could plug the StorageManager (which I think it would be a better approach).
I liked this post so much.. and I'm moving it to the dev's forum since this is a dev's thread IMO.
HornetQ has a OperationContext class. We never block on any persistence at all.
I'm wondering if you would require persistence on the DB before before completing the context? The best would be to not require it. You could implement something on the JournalStorageManager to check if the message is available upon restart. So, you would keep it totally asynchronous and not affecting (or minimally affecting performance).
Thanks for the reply and thoughs Clebert.
Unfortunately I think getting the data from the broker is the less difficult part. I like your ideas on where to put the plugin, the only caveat I would add is that it would be ideal if the data was persisted and available on JMS so that common adaptors can be written. Perhaps subscribing to '#' and get all messages to all topics seems like a simple approach. Maybe add a '#!' which means all messages to all topics & queues.
The part I find hard is deciding if there is a project out there that has the Web Frontend that can display this data with a pluggable framework for custom actions. Since I deal with a lot of OpenSource and not one particular JMS broker, I want to ensure that it would also work with any JMS vendor.
On other messaging boards, people have recommended HermesJMS, however this is more of a developer tool and would need to have a full web gui written.
It seems like no such tool exists... so I am thinking either:
a) Ignore the auditing/logging requirement and send failed/dmq messages to a BPEL process which could give users the ability to view/resubmit, etc..
b) Start a new Open source project, given our teams skillset we would probably write the frontend in grails or gwt. My gui skills aren't great, so was hoping to have a front-end to start with and add to it..
Thanks again for taking the time to respond!
I like the idea of gwt... Maybe Errai?
I don't think you can subscribe to the data with pure-jms. You can't for instance have multiple consumers to a single jms queue.
(You can with hornetq-core).
I would suggest you having plugin forms to providers. With hornetq the easiest would probably be through a special StorageManager.