Apache.NMS.ActiveMQ.Test.VirtualTopicTest.SendReceiveVirtualTopicMessage C# (CSharp) Method

SendReceiveVirtualTopicMessage() private method

private SendReceiveVirtualTopicMessage ( [ ackMode, [ deliveryMode ) : void
ackMode [
deliveryMode [
return void
        public void SendReceiveVirtualTopicMessage(
			[Values(AcknowledgementMode.AutoAcknowledge, AcknowledgementMode.ClientAcknowledge,
				AcknowledgementMode.DupsOkAcknowledge, AcknowledgementMode.Transactional)]
			AcknowledgementMode ackMode,
			[Values(MsgDeliveryMode.NonPersistent, MsgDeliveryMode.Persistent)]
			MsgDeliveryMode deliveryMode)
        {
            using(IConnection connection = CreateConnection(TEST_CLIENT_ID))
            {
                connection.Start();
                using(ISession session = connection.CreateSession(ackMode))
                {
                    using(IMessageConsumer consumerA = session.CreateConsumer(session.GetQueue(CONSUMER_A_DESTINATION_NAME)))
                    using(IMessageConsumer consumerB = session.CreateConsumer(session.GetQueue(CONSUMER_B_DESTINATION_NAME)))
                    using(IMessageProducer producer = session.CreateProducer(session.GetTopic(PRODUCER_DESTINATION_NAME)))
                    {
                        producer.DeliveryMode = deliveryMode;

                        for(int index = 0; index < totalMsgs; index++)
                        {
                            string msgText = "Message #" + index;
                            Tracer.Info("Sending: " + msgText);
                            producer.Send(session.CreateTextMessage(msgText));
                        }

                        if(AcknowledgementMode.Transactional == ackMode)
                        {
                            session.Commit();
                        }

                        for(int index = 0; index < totalMsgs; index++)
                        {
                            string msgText = "Message #" + index;
                            ITextMessage messageA = consumerA.Receive(receiveTimeout) as ITextMessage;
                            Assert.IsNotNull(messageA, "Did not receive message for consumer A.");
                            messageA.Acknowledge();
                            Tracer.Info("Received A: " + msgText);

                            ITextMessage messageB = consumerB.Receive(receiveTimeout) as ITextMessage;
                            Assert.IsNotNull(messageB, "Did not receive message for consumer B.");
                            messageB.Acknowledge();
                            Tracer.Info("Received B: " + msgText);

                            Assert.AreEqual(msgText, messageA.Text, "Message text A does not match.");
                            Assert.AreEqual(msgText, messageB.Text, "Message text B does not match.");
                        }

                        if(AcknowledgementMode.Transactional == ackMode)
                        {
                            session.Commit();
                        }
                    }

                    // Give the Broker some time to remove the subscriptions.
                    Thread.Sleep(2000);

                    try
                    {
                        ((Session) session).DeleteDestination(session.GetQueue(CONSUMER_A_DESTINATION_NAME));
                        ((Session) session).DeleteDestination(session.GetQueue(CONSUMER_B_DESTINATION_NAME));
                    }
                    catch
                    {
                    }
                }
            }
        }