activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sanjeev (JIRA)" <jira+amq...@apache.org>
Subject [jira] Created: (AMQNET-131) .NET Client is not receiving messages
Date Thu, 04 Dec 2008 06:08:05 GMT
.NET Client is not receiving messages
-------------------------------------

                 Key: AMQNET-131
                 URL: https://issues.apache.org/activemq/browse/AMQNET-131
             Project: ActiveMQ .Net
          Issue Type: Bug
          Components: ActiveMQ Client
         Environment: 1. Java Producer using Mule placing Messages into Queue.
2. ActiveMQ on JBoss web server, running on Linux 
3. .NET Consumer running as Windows Service on Windows 2003 server
            Reporter: Sanjeev
            Assignee: Jim Gomes
            Priority: Critical


I am using IMessageConsumer to receive messages from the queue using NMS on .NET.
The listener is dying periodically within  half-hour. I could see messages in the queue. But
.NET Listener is not getting any messages.
The messages are arriving after I restart the service. 

Please find below the code I am using

Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Configuration
Imports System.Threading

Imports ActiveMQ
Imports Spring.Messaging.Nms
Imports Spring.Messaging.Nms.Listener
Imports Business.RIO.Business
Imports BusinessEntities.RIO.Entities
Imports Exceptions.RMSExceptions
Imports Utils.RIO.Utils
Imports NMS
Imports System.Xml
Imports System.Timers




Namespace ListenerConsole

    Public Class InterfaceBaseHelper

#Region "Private Variables"

        Private config As ConfigurationEntity

#End Region

        Public Sub New()
            config = New ConfigurationEntity()
            config.ServerName = ConfigurationManager.AppSettings("ServerName")
            config.LocationQueueName = ConfigurationManager.AppSettings("LocationQueueName")
            config.CustQueueName = ConfigurationManager.AppSettings("CustomerQueueName")
            config.WOQueueName = ConfigurationManager.AppSettings("WOQueueName")
            config.MeterQueueName = ConfigurationManager.AppSettings("MeterQueueName")
            config.InfraQueueName = ConfigurationManager.AppSettings("InfraQueueName")
            config.LocationAckQueueName = ConfigurationManager.AppSettings("LocationAcknowledgementQueueName")
            config.MeterAckQueueName = ConfigurationManager.AppSettings("MeterAcknowledgementQueueName")
            config.WOAckQueueName = ConfigurationManager.AppSettings("WOAcknowledgementQueueName")
            config.InfraAckQueueName = ConfigurationManager.AppSettings("InfraAcknowledgementQueueName")
            config.CustAckQueueName = ConfigurationManager.AppSettings("CustAcknowledgementQueueName")
            config.ErrorQueueName = ConfigurationManager.AppSettings("ErrorQueueName")
            config.ServerPollingIntervalInSeconds = Convert.ToInt32(ConfigurationManager.AppSettings("ServerConnectionPollingIntervalInSeconds"))

            facade = New RIOFacade(config)
        End Sub

        Dim timer As System.Timers.Timer
        Dim facade As RIOFacade


        ''' <summary>
        ''' Starts all queues
        ''' </summary>
        ''' <remarks></remarks>
        Public Sub ServiceStartUp()
            Try
                timer = New System.Timers.Timer()
                timer.Interval = config.ServerPollingIntervalInSeconds * 1000
                timer.Enabled = True
                OpenConnections()
                AddHandler timer.Elapsed, (AddressOf StartConnections)
                timer.Start()
            Catch ex As Exception
                ExceptionManager.HandleException(ex)
                RIOHelper.LogException(ex)
            End Try

        End Sub

        Dim lookupsCached As Boolean = False


        Private Sub OpenConnections()
            Try
            
                ListenLocationQueueMessaage()
                ListenMeterQueueMessaage()
                ListeninfraQueueMessaage()
                ListenWOQueueMessaage()
                RIOHelper.LogMessage("Connections Started.")
            Catch ex As Exception
                RIOHelper.LogMessage(ex.Message)
                ExceptionManager.HandleException(ex)
            End Try
        End Sub


        Private Sub StartConnections(ByVal sender As Object, ByVal e As ElapsedEventArgs)
            Try
                timer.Stop()
                CloseConnections()
                OpenConnections()
            Catch ex As Exception
                RIOHelper.LogMessage(ex.Message)
                ExceptionManager.HandleException(ex)
            End Try
            timer.Start()
        End Sub

        Private Sub CloseConnections()
            locConnectionFactory = Nothing
            locConsumer.Close()
            locConsumer.Dispose()
            locSession.Close()
            locSession.Dispose()
            locConnection.Close()
            locConnection.Dispose()

            mtrConnectionFactory = Nothing
            mtrConsumer.Close()
            mtrConsumer.Dispose()
            mtrSession.Close()
            mtrSession.Dispose()
            mtrConnection.Close()
            mtrConnection.Dispose()

            woConnectionFactory = Nothing
            woConsumer.Close()
            woConsumer.Dispose()
            woSession.Close()
            woSession.Dispose()
            woConnection.Close()
            woConnection.Dispose()

            infraConnectionFactory = Nothing
            infraConsumer.Close()
            infraConsumer.Dispose()
            infraSession.Close()
            infraSession.Dispose()
            infraConnection.Close()
            infraConnection.Dispose()

        End Sub

#Region "Listerners"

        Dim locConnectionFactory As ConnectionFactory
        Dim locConnection As IConnection
        Dim locSession As ISession
        Dim locConsumer As IMessageConsumer

        ''' <summary>
        ''' Listener for Location queue
        ''' </summary>
        ''' <remarks></remarks>
        Private Sub ListenLocationQueueMessaage()
            locConnectionFactory = New ConnectionFactory(config.ServerName)
            locConnection = locConnectionFactory.CreateConnection()
            locSession = locConnection.CreateSession()
            locConsumer = locSession.CreateConsumer(locSession.GetQueue(config.LocationQueueName))
            AddHandler locConsumer.Listener, (AddressOf HandleLocation)
        End Sub

        Private Sub HandleLocation(ByVal message As IMessage)
            facade.ProcessLocation(TryCast(message, ITextMessage).Text)
        End Sub

        Dim mtrConnectionFactory As ConnectionFactory
        Dim mtrConnection As IConnection
        Dim mtrSession As ISession
        Dim mtrConsumer As IMessageConsumer

        ''' <summary>
        ''' Listener for Meter queue
        ''' </summary>
        ''' <remarks></remarks>
        Private Sub ListenMeterQueueMessaage()
            mtrConnectionFactory = New ConnectionFactory(config.ServerName)
            mtrConnection = mtrConnectionFactory.CreateConnection()
            mtrSession = mtrConnection.CreateSession()
            mtrConsumer = mtrSession.CreateConsumer(mtrSession.GetQueue(config.MeterQueueName))
            AddHandler mtrConsumer.Listener, (AddressOf HandleMeter)
        End Sub

        Private Sub HandleMeter(ByVal message As IMessage)
            facade.ProcessMeter(TryCast(message, ITextMessage).Text)
        End Sub


        Dim woConnectionFactory As ConnectionFactory
        Dim woConnection As IConnection
        Dim woSession As ISession
        Dim woConsumer As IMessageConsumer

        ''' <summary>
        ''' Listener for WorkOrder queue
        ''' </summary>
        ''' <remarks></remarks>
        Private Sub ListenWOQueueMessaage()
            woConnectionFactory = New ConnectionFactory(config.ServerName)
            woConnection = woConnectionFactory.CreateConnection()
            woSession = woConnection.CreateSession()
            woConsumer = woSession.CreateConsumer(woSession.GetQueue(config.WOQueueName))
            AddHandler woConsumer.Listener, (AddressOf HandleWO)
        End Sub

        Private Sub HandleWO(ByVal message As IMessage)
            facade.ProcessWO(TryCast(message, ITextMessage).Text)
        End Sub


        Dim infraConnectionFactory As ConnectionFactory
        Dim infraConnection As IConnection
        Dim infraSession As ISession
        Dim infraConsumer As IMessageConsumer

        ''' <summary>
        ''' Listener for Infra queue
        ''' </summary>
        ''' <remarks></remarks>
        Private Sub ListeninfraQueueMessaage()
            infraConnectionFactory = New ConnectionFactory(config.ServerName)
            infraConnection = infraConnectionFactory.CreateConnection()
            infraSession = infraConnection.CreateSession()
            infraConsumer = infraSession.CreateConsumer(infraSession.GetQueue(config.InfraQueueName))
            AddHandler infraConsumer.Listener, (AddressOf HandleInfra)
        End Sub

        Private Sub HandleInfra(ByVal message As IMessage)
            facade.ProcessInfra(TryCast(message, ITextMessage).Text)
        End Sub


#End Region




    End Class
End Namespace


-- 
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