[
https://issues.apache.org/jira/browse/AMQ-6205?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Timothy Bish closed AMQ-6205.
-----------------------------
Resolution: Invalid
Please post questions on the users mailing list, Jira is where bug reports are
submitted.
> When two object messages are submitted to the queue, only the second message
> is ever read by the receiver
> ---------------------------------------------------------------------------------------------------------
>
> Key: AMQ-6205
> URL: https://issues.apache.org/jira/browse/AMQ-6205
> Project: ActiveMQ
> Issue Type: Bug
> Components: Transport
> Affects Versions: 5.13.2
> Environment: AMQ version is 5.13.2.
> Java 1.8.0_74
> transportConnector uri="vm://localhost"
> OS is Windows 10
> Reporter: David Johnson
>
> This is cross-posted at
> http://stackoverflow.com/questions/35896002/activemq-jms-losing-messages-what-am-i-missing
> What am I missing? I am hoping this is a PICNIC error (Problem In Chair, Not
> In Computer), but if so I am not seeing how.
> 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. This can be confirmed by looking at the message ID in the log.
> 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
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)