activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Palm Kevin (JIRA)" <jira+amq...@apache.org>
Subject [jira] Commented: (AMQNET-214) Individual Acknowledge only working on last message in queue
Date Wed, 25 Nov 2009 14:17:53 GMT

    [ https://issues.apache.org/activemq/browse/AMQNET-214?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=56101#action_56101
] 

Palm Kevin commented on AMQNET-214:
-----------------------------------

Here two test-cases.
The first is working and the second crashes on ??Read first message a second time??
Working test:
{noformat} Public Sub IndividualAcknowledgeMultiMessages_AcknowledgeSecondTest()
        Dim messageId As String = Nothing
        Using connection As IConnection = New ActiveMQ.ConnectionFactory("tcp:\\localhost:61616").CreateConnection()
            connection.Start()
            Using session As ISession = connection.CreateSession(AcknowledgementMode.AutoAcknowledge)
                ' Delete queue in order to ensure it is empty
                session.DeleteDestination(session.GetQueue("TestQueue"))

                Dim prod As IMessageProducer = session.CreateProducer(session.GetQueue("TestQueue"))
                Dim msg As ITextMessage = prod.CreateTextMessage("test")
                prod.Send(msg, MsgDeliveryMode.Persistent, MsgPriority.Normal, TimeSpan.MinValue)
                prod.Close()
                messageId = msg.NMSMessageId
                Assert.IsNotNull(messageId)
                Dim consumer = session.CreateConsumer(session.GetQueue("TestQueue"), "JMSMessageID='"
+ messageId + "'")
                Dim fetchedMessage = consumer.Receive(TimeSpan.FromMilliseconds(TIMEOUT))
                Assert.IsNotNull(fetchedMessage)
                Assert.AreEqual("test", CType(fetchedMessage, ITextMessage).Text)
                consumer.Close()
            End Using
        End Using
    End Sub
{noformat} 
Not working test:
{noformat}Public Sub IndividualAcknowledgeMultiMessages_AcknowledgeFirstTest()
        Using connection As IConnection = New ActiveMQ.ConnectionFactory("tcp:\\localhost:61616").CreateConnection()
            connection.Start()
            Using session As ISession = connection.CreateSession(AcknowledgementMode.IndividualAcknowledge)
                ' Delete queue in order to ensure it is empty
                session.DeleteDestination(session.GetQueue("TestQueue"))

                ' Push 2 messages to queue
                Dim prod As IMessageProducer = session.CreateProducer(session.GetQueue("TestQueue"))
                Dim msg As ITextMessage = prod.CreateTextMessage("test 1")
                prod.Send(msg, MsgDeliveryMode.Persistent, MsgPriority.Normal, TimeSpan.MinValue)
                msg = prod.CreateTextMessage("test 2")
                prod.Send(msg, MsgDeliveryMode.Persistent, MsgPriority.Normal, TimeSpan.MinValue)
                prod.Close()

                Dim consumer = session.CreateConsumer(session.GetQueue("TestQueue"))
                ' Read the first message
                Dim fetchedMessage1 = consumer.Receive(TimeSpan.FromMilliseconds(TIMEOUT))
                Assert.IsNotNull(fetchedMessage1)
                Assert.AreEqual("test 1", CType(fetchedMessage1, ITextMessage).Text)
                Dim fetchedMessage2 = consumer.Receive(TimeSpan.FromMilliseconds(TIMEOUT))
                Assert.IsNotNull(fetchedMessage2)
                Assert.AreEqual("test 2", CType(fetchedMessage2, ITextMessage).Text)

                ' Acknowledge first message
                fetchedMessage1.Acknowledge()

                consumer.Close()

                ' Read first message a second time
                consumer = session.CreateConsumer(session.GetQueue("TestQueue"))
                fetchedMessage1 = consumer.Receive(TimeSpan.FromMilliseconds(TIMEOUT))
                Assert.IsNotNull(fetchedMessage1)
                Assert.AreEqual("test 2", CType(fetchedMessage1, ITextMessage).Text)

                ' Try to read second message a second time
                fetchedMessage2 = consumer.Receive(TimeSpan.FromMilliseconds(TIMEOUT))
                Assert.IsNull(fetchedMessage2)
                consumer.Close()
            End Using
        End Using
    End Sub
{noformat} 

> Individual Acknowledge only working on last message in queue
> ------------------------------------------------------------
>
>                 Key: AMQNET-214
>                 URL: https://issues.apache.org/activemq/browse/AMQNET-214
>             Project: ActiveMQ .Net
>          Issue Type: Bug
>          Components: ActiveMQ
>    Affects Versions: 1.2.0
>            Reporter: Palm Kevin
>            Assignee: Jim Gomes
>            Priority: Critical
>
> The new acknowldege-mode _IndividualAcknowledge_ seems not working correctly.
> The _message.Acknowledge()_ does only work if called on last message of the queue!

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message