You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Ulrich Romahn (JIRA)" <ji...@apache.org> on 2014/01/08 20:46:50 UTC
[jira] [Updated] (QPID-5455) [AMQP 1.0 JMS client] Client looses
persistent messages violating JMS delivery guarantee
[ https://issues.apache.org/jira/browse/QPID-5455?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ulrich Romahn updated QPID-5455:
--------------------------------
Priority: Minor (was: Blocker)
Changed bug priority to minor as this seems a simple documentation issue as well as potentially changing the default to sync publishing.
> [AMQP 1.0 JMS client] Client looses persistent messages violating JMS delivery guarantee
> ----------------------------------------------------------------------------------------
>
> Key: QPID-5455
> URL: https://issues.apache.org/jira/browse/QPID-5455
> Project: Qpid
> Issue Type: Bug
> Components: Java Client
> Affects Versions: 0.26
> Environment: Java
> Reporter: Ulrich Romahn
> Priority: Minor
>
> I think the client violates the delivery guarantee of JMS with persistent messages.
> Here is my test:
> 1. Start a qpid-cpp broker. Create a persistent queue on that broker
> 2. Start a test Java application using the amqp 1.0 JMS client. The application will write 10,000 persistent messages into the just created queue.
> 3. After some time while the client is still writing messages into the queue, I kill the broker (kill -9 <pid>) simulating the worst disaster scenario
> 4. My client code throws an exception and reports 4,963 messages sent
> 5. After re-starting qpidd, the queue statistics reports only 4,816 messages in the queue!
> Here are some of the relevant code snippets from the client:
> // Creating a Session
> Session session = brokerConn.getConnection().createSession(false, Session.AUTO_ACKNOWLEDGE); // NOTE AUTO_ACKNOWLEGE does not have any effect with nessage producer
> // Create a destination
> Destination dest = session.createQueue(queueName);
> // Creating a MessageProducer
> MessageProducer msgProducer = session.createProducer(dest);
> msgProducer.setDeliveryMode(2); // 2 == persistent
> And then in a loop 1000 times with a random TextMessage I call:
> msgProducer.send(msg);
> So, it looks like the client is sending the message to the broker and the "send(msg)" method returns *before* either the broker acknowledged receiving and persisting the message, or the client does some internal caching.
> By the way, I see the exact same issue when using ActiveMQ 5.9.0 as the broker using the AMQP connector.
> However, it is also possible that the bug is within the proton library on the server side which is being used in both the qpid-cpp broker (proton-c) and ActiveMQ 5.9.0 (proton-j) to support AMQP 1-0.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org