Return-Path: Delivered-To: apmail-activemq-dev-archive@www.apache.org Received: (qmail 63991 invoked from network); 23 Oct 2010 18:09:43 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 23 Oct 2010 18:09:43 -0000 Received: (qmail 55523 invoked by uid 500); 23 Oct 2010 18:09:43 -0000 Delivered-To: apmail-activemq-dev-archive@activemq.apache.org Received: (qmail 55487 invoked by uid 500); 23 Oct 2010 18:09:42 -0000 Mailing-List: contact dev-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list dev@activemq.apache.org Delivered-To: moderator for dev@activemq.apache.org Received: (qmail 85739 invoked by uid 99); 21 Oct 2010 05:43:20 -0000 X-ASF-Spam-Status: No, hits=0.7 required=10.0 tests=SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (nike.apache.org: local policy) Message-ID: <4CBFD2FC.7030403@apache.org> Date: Thu, 21 Oct 2010 07:43:24 +0200 From: Norman User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.9) Gecko/20100915 Thunderbird/3.1.4 MIME-Version: 1.0 To: dev@activemq.apache.org Subject: Add JMS Stream transaction support Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org 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