Use a JMX viewer to look at the stats for the queue; how many enqueues and
dequeues do you see?  How many consumers are there?

On Wed, Mar 9, 2016 at 1:11 PM, swift99 <djohn...@maxistechnology.com>
wrote:

> What am I missing?
>
> This is cross-posted from
>
> http://stackoverflow.com/questions/35896002/activemq-jms-losing-messages-what-am-i-missing
> .
>
> AMQ version 5.13.2
> Java 1.8.0_74
> Windows 10
> transportConnector uri="vm://localhost"
>
> Given a simple test case, two Object messages are transmitted, one with
> data
> and the other being an end-of-data marker. Only the end-of-data marker is
> being received.
>
> The queue is created at the beginning of the job, and destroyed after the
> job completes.
>
> If I run a larger number of transactions, I see about a 50% receive rate.
>
> The logs clearly show that the receiver was started before the first
> message
> was put on the queue, both messages are being put on the queue, but only
> the
> second message is actually being received.
>
> Both the sender and receiver are on the same JVM. Each has its own Session
> and Connection.
>
> Transmit code:
>
>     private void doSomeStuffInTransaction (final Object model) {
>         transactionTemplate.execute(new TransactionCallbackWithoutResult()
> {
>             @Override
>             protected void doInTransactionWithoutResult(TransactionStatus
> status) {
>                 try {
>                     doSomeStuff ( model );
>
>                     ObjectMessage message = session.createObjectMessage(
>                             (model.getRoot() == null)
>                             ? null
>                             : model.getRoot().getContents().getId());
>                     messageProducer.send(message);
>                     logger.debug("Sent: {}", message.toString());
>                 }catch (Exception e) {
>                       //use this to rollback exception in case of exception
>                     status.setRollbackOnly();
>                     throw new RuntimeException(e.getmessage(), e);
>                 }
>
>             }});
>     }
> Receiver code:
>
> public Object read() throws Exception,
>         UnexpectedInputException, ParseException,
>         NonTransientResourceException {
>
>     Object result = null;
>
>     logger.debug("Attempting to receive message on connection: ",
> connection.toString());
>
>     ObjectMessage msg = (ObjectMessage) messageConsumer.receive();
>     logger.debug("Received: {}", msg.toString());
>     result = msg.getObject();
>
>     return result;
> }
>
>
> Log snip:
>
> DEBUG com.mylib.SelectedDataJmsReader - Attempting to receive message on
> connection:
> ... snip ...
> DEBUG com.mylib.SelectedDataJmsWriter - Sent: ActiveMQObjectMessage
> {commandId = 0, responseRequired = false, messageId =
> ID:zip-51438-1457536143607-4:1:5:1:1, originalDestination = null,
> originalTransactionId = null, producerId = null, destination =
> queue://Workorders via SQL.383, transactionId = null, expiration = 0,
> timestamp = 1457536412608, arrival = 0, brokerInTime = 0, brokerOutTime =
> 0,
> correlationId = null, replyTo = null, persistent = true, type = null,
> priority = 4, groupID = null, groupSequence = 0, targetConsumerId = null,
> compressed = false, userID = null, content =
> org.apache.activemq.util.ByteSequence@3c21d3e0, marshalledProperties =
> null,
> dataStructure = null, redeliveryCounter = 0, size = 0, properties = null,
> readOnlyProperties = false, readOnlyBody = false, droppable = false,
> jmsXGroupFirstForConsumer = false}
> INFO  com.mylib.SelectedDataJmsWriter - Committed 1 hierarchies to redo log
> and JMS queue
> INFO  com.mylib.SourceSelectionReaderImpl - Returning empty treemodel and
> end-of-stream placeholder.
> DEBUG com.mylib.SelectedDataJmsWriter - Sent: ActiveMQObjectMessage
> {commandId = 0, responseRequired = false, messageId =
> ID:zip-51438-1457536143607-4:1:5:1:2, originalDestination = null,
> originalTransactionId = null, producerId = null, destination =
> queue://Workorders via SQL.383, transactionId = null, expiration = 0,
> timestamp = 1457536412696, arrival = 0, brokerInTime = 0, brokerOutTime =
> 0,
> correlationId = null, replyTo = null, persistent = true, type = null,
> priority = 4, groupID = null, groupSequence = 0, targetConsumerId = null,
> compressed = false, userID = null, content = null, marshalledProperties =
> null, dataStructure = null, redeliveryCounter = 0, size = 0, properties =
> null, readOnlyProperties = false, readOnlyBody = false, droppable = false,
> jmsXGroupFirstForConsumer = false}
> INFO  com.mylib.SelectedDataJmsWriter - Committed 1 hierarchies to redo log
> and JMS queue
> DEBUG com.mylib.SelectedDataJmsReader - Received: ActiveMQObjectMessage
> {commandId = 19, responseRequired = true, messageId =
> ID:zip-51438-1457536143607-4:1:5:1:2, originalDestination = null,
> originalTransactionId = null, producerId =
> ID:zip-51438-1457536143607-4:1:5:1, destination = queue://Workorders via
> SQL.383, transactionId = null, expiration = 0, timestamp = 1457536412696,
> arrival = 0, brokerInTime = 1457536412696, brokerOutTime = 1457536412697,
> correlationId = null, replyTo = null, persistent = true, type = null,
> priority = 4, groupID = null, groupSequence = 0, targetConsumerId = null,
> compressed = false, userID = null, content = null, marshalledProperties =
> null, dataStructure = null, redeliveryCounter = 0, size = 1024, properties
> =
> null, readOnlyProperties = true, readOnlyBody = true, droppable = false,
> jmsXGroupFirstForConsumer = false}
> INFO  com.mylib.SelectedDataJmsReader - executed read, found end-of-stream
> marker, returning null
>
>
>
> --
> View this message in context:
> http://activemq.2283324.n4.nabble.com/ActiveMQ-JMS-losing-messages-what-am-I-missing-tp4709127.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>

Reply via email to