You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Oliver Probst (JIRA)" <ji...@apache.org> on 2015/12/08 10:30:10 UTC

[jira] [Created] (AMQNET-514) Lazy loading of map messages does not work correctly

Oliver Probst created AMQNET-514:
------------------------------------

             Summary: Lazy loading of map messages does not work correctly
                 Key: AMQNET-514
                 URL: https://issues.apache.org/jira/browse/AMQNET-514
             Project: ActiveMQ .Net
          Issue Type: Bug
          Components: ActiveMQ, NMS
    Affects Versions: 1.7.1, 1.7.0
         Environment: Apache NMS 1.7.0.3635
Apache NMS ActiveMQ 1.7.0.3660
Runtime Version v4.0.30319
            Reporter: Oliver Probst
            Assignee: Jim Gomes
            Priority: Critical


I use Apache NMS ActiveMQ together with Spring NMS and map messages. I use two persistent queues. Dequeuing without accessing the message and then queuing the same message again results in a removal of the complete body of the map message. The use case is that we move a map message to an error queue if an exception occurs while dequeuing. I've got a unit test which shows the behaviour with one persistent queue (queue=>dequeue=>queue=>dequeue):

 [Test]
        public void QueueDequeueQueueDequeueTest()
        {
            IConnectionFactory factory = CreateConnectionFactory();
            var nmsTemplate = new NmsTemplate(factory) { ReceiveTimeout = 5000 };
            // Queue
            nmsTemplate.SendWithDelegate("queue://FOO.BAR", delegate(ISession session)
            {
                var mapMessage = session.CreateMapMessage();
                mapMessage.Body.SetString("Unit-Test-Key", "Unit-Test-Value");
                return mapMessage;
            });
            // Dequeue
            var currentMessage = nmsTemplate.Receive("queue://FOO.BAR") as IMapMessage;
            Assert.IsNotNull(currentMessage, "currentMessage is null");
            // Queue
            IMapMessage message = currentMessage;
            nmsTemplate.SendWithDelegate("queue://FOO.BAR", session => message);
            Assert.IsNotNull(currentMessage, "currentMessage is null");
            // Dequeue
            currentMessage = nmsTemplate.Receive("queue://FOO.BAR") as IMapMessage;
            Assert.IsNotNull(currentMessage, "currentMessage is null");
            Assert.IsTrue(currentMessage.Body.Contains("Unit-Test-Key"), "Unit-Test-Key does not exist");
        }



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)