qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rajith Attapattu (JIRA)" <qpid-...@incubator.apache.org>
Subject [jira] Commented: (QPID-1770) JMS: No useful exception thrown when message is sent to full queue
Date Thu, 26 Mar 2009 21:17:00 GMT

    [ 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:dev-subscribe@qpid.apache.org


Mime
View raw message