Good suggestion!! :)
Yes, an ExceptionListener on the Connection does get the exception when 
ResourceAllocationException is thrown.

Of course, I could hack my way around it, notifying the client from the 
connection when the connection receives the error, but that seems backwards to 
me…. the error is sent in another thread, so I have no guarantee that the 
client is notified in time to avoid committing after an error occurs.

(and honestly, returning from commit() without errors when all my messages have 
been discarded seems to be a strange transactional contract…. even if error 
notification is sent in another channel)

I could not find an existing issue that describes this problem, so I'm going to 
post a bug report of the problem.

On 28. Aug2013, at 22:26, "ceposta [via ActiveMQ]" 
<ml-node+s2283324n4670864...@n4.nabble.com> wrote:

> Maybe set an exception listener on the connection and see if you get it 
> there? 
> 
> http://activemq.apache.org/maven/apidocs/org/apache/activemq/ActiveMQConnection.html#setExceptionListener(javax.jms.ExceptionListener)
>  
> 
> 
> On Wed, Aug 28, 2013 at 12:38 PM, [hidden email] <[hidden email]>wrote: 
> 
> > Hi all. 
> > 
> > I am fairly new to ActiveMQ, having used SwiftMQ for a long time. 
> > However, I am stuck with a problem which I think may be a bug, unless I 
> > have 
> > seriously misread some documentation... so any suggestions are welcome! 
> > 
> > Short environment description: 
> > Producers are sending messages to a topic, and a set of Durable Consumers 
> > are subscribing to these messages. Both Producer and Consumer sessions are 
> > transacted, and messages are persistent. 
> > When a Consumer falls behind, or becomes offline, the producer should STOP 
> > (when configured resource limits have been reached). 
> > 
> > To configure this in ActiveMQ, I have configured systemUsage 
> > sendFailIfNoSpace=true: 
> > 
> > 
> > 
> > However, when the storeUsage has been reached, ActiveMQ log tells me that 
> > the store is full, and the producer is being stopped, but the client does 
> > not get any hint of this! 
> > 
> > From ActiveMQ log: 
> > javax.jms.ResourceAllocationException: Persistent store is Full, 100% of 
> > 209715200. Stopping producer (ID:Calvin.local-52167-1377716876253-5:1:1:1) 
> > to prevent flooding topic://nidstopic. See 
> > http://activemq.apache.org/producer-flow-control.html for more info 
> > 
> > However, the client just keeps sending messages, which are being discarded. 
> > I have debugged the client code into ActiveMQ classes, and the client is 
> > happily both sending the message, and commiting the transaction, without 
> > any 
> > exception being thrown. 
> > 
> > Changing to non-transacted session causes the producer to receive 
> > ResourceAllocationException when the store is full. 
> > 
> > I am running ActiveMQ 5.8.0 on Java 1.7 on Linux. 
> > I have tried both with LevelDB and KahaDB, just in case. 
> > 
> > Any suggestions? 
> > 
> > 
> > 
> > -- 
> > View this message in context: 
> > http://activemq.2283324.n4.nabble.com/Clients-not-receiving-ResourceAllocationException-in-transacted-sessions-tp4670862.html
> > Sent from the ActiveMQ - User mailing list archive at Nabble.com. 
> >
> 
> 
> 
> -- 
> *Christian Posta* 
> http://www.christianposta.com/blog
> twitter: @christianposta 
> http://www.christianposta.com/blog
> 
> 
> If you reply to this email, your message will be added to the discussion 
> below:
> http://activemq.2283324.n4.nabble.com/Clients-not-receiving-ResourceAllocationException-in-transacted-sessions-tp4670862p4670864.html
> To unsubscribe from Clients not receiving ResourceAllocationException in 
> transacted sessions, click here.
> NAML





--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Clients-not-receiving-ResourceAllocationException-in-transacted-sessions-tp4670862p4670895.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to