You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by Norman <no...@apache.org> on 2010/10/21 07:43:24 UTC

Add JMS Stream transaction support

  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