Hi devs,

the JAMES project is using ActiveMQ for implementing its Mail Queue. So far everything works out well. We use BytesMessage's for transfering the Mails, which work out but is not very memory efficient because we need to hold the whole message in memory. So we introduced some kind of treshold limit which allows us to failover to BlobMessage's once a size treshold was hit. But I'm not 100 % happy with this because it will make clustering etc just really complex (because of the need to manual replicate the out-of-band stored message).

So I had a look at the JMS Streams stuff (ActiveMQInputStream / ActiveMQOutputStream), which does better fit our need at the first look ;). To make it usable for us I already submitted two patches which are these:

https://issues.apache.org/activemq/browse/AMQ-2990 (committed)
https://issues.apache.org/activemq/browse/AMQ-2988 ( still open)

But still with this patches one thing is missing for our usecase, transactions :) From the docs I found and from the source-code I understood that the whole transaction must be keeped in memory while it is running (on the broker). Neverless I think thats not a problem if its documented. Sure that will not workout verywell with 10gb messages, but with for example 50mb it will prolly work out (depending on how many transactions are active at the same time and how much heap the broker has). So what about adding support for transactions and just state it in the docs ? To be more clear I would volunteer to write the patch for it ;)

WDYT ?

Bye,
Norman


Reply via email to