[ 
https://issues.apache.org/jira/browse/QPID-1770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12689671#action_12689671
 ] 

Rajith Attapattu commented on QPID-1770:
----------------------------------------

The send in the JMS client is not synchronous. So you wouldn't get notify on 
the N-th message transfer.
By the time you receive the exception you may have put a few more transfers on 
the wire.

If you want the N-th message transfer to fail then you need to do synchronous 
publish.
If you are using a durable queue and have marked your messages persistent, then 
you could use
-Dsync_publish=persistent or add sync_publish=persistent to the connection URL.
else you could use
-Dsync_publish=all or add sync_publish=all to the connection URL.
Please note that sync publish is very slow compared to async publishing.

> JMS: No useful exception thrown when message is sent to full queue
> ------------------------------------------------------------------
>
>                 Key: QPID-1770
>                 URL: https://issues.apache.org/jira/browse/QPID-1770
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Client
>    Affects Versions: M4
>         Environment: Redhat with C++ broker
>            Reporter: Jeff Stein
>            Assignee: Rajith Attapattu
>            Priority: Critical
>             Fix For: 0.5
>
>
> In JMS, when a message is sent when a queue is already at its maximum size, 
> nothing happens for 60 seconds.  The program just hangs there.  Then, 
> suddenly, these two exceptions are thrown:
> org.apache.qpid.transport.SessionException: timed out waiting for session to 
> become open (state=DETACHED)
>       at org.apache.qpid.transport.Session.invoke(Session.java:442)
>       at 
> org.apache.qpid.transport.SessionInvoker.messageTransfer(SessionInvoker.java:96)
>       at 
> org.apache.qpid.client.BasicMessageProducer_0_10.sendMessage(BasicMessageProducer_0_10.java:160)
>       at 
> org.apache.qpid.client.BasicMessageProducer.sendImpl(BasicMessageProducer.java:465)
>       at 
> org.apache.qpid.client.BasicMessageProducer.sendImpl(BasicMessageProducer.java:420)
>       at 
> org.apache.qpid.client.BasicMessageProducer.send(BasicMessageProducer.java:289)
>       at Producer.runTest(Producer.java:135)
>       at Producer.main(Producer.java:64)
> Producer: Caught an Exception: javax.jms.JMSException: Exception when sending 
> message
> javax.jms.JMSException: Exception when sending message
>       at 
> org.apache.qpid.client.BasicMessageProducer_0_10.sendMessage(BasicMessageProducer_0_10.java:173)
>       at 
> org.apache.qpid.client.BasicMessageProducer.sendImpl(BasicMessageProducer.java:465)
>       at 
> org.apache.qpid.client.BasicMessageProducer.sendImpl(BasicMessageProducer.java:420)
>       at 
> org.apache.qpid.client.BasicMessageProducer.send(BasicMessageProducer.java:289)
>       at Producer.runTest(Producer.java:135)
>       at Producer.main(Producer.java:64)
> This is in contrast to, for example, a Python qpid producer, which will throw 
> an exception as soon as the queue is full, and it will be very specific about 
> the problem, telling you the queue is too full, which message overfilled it, 
> etc.
> I tested this using a hacked up version of the direct producer/consumer JMS 
> example.  Just run the producer (without the consumer running) long enough 
> with large enough messages so that it will reach the maximum queue size, and 
> you should be able to see it. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to