Sorry.  When i make that 2nd call to the 2nd queue for the correlation ID - 
even though there is a message there I get a null message.

If I strip out the code and just directly connect to the 2nd queue and pull a 
message it is there.

It is something in relation to one connection, or one consumer obtaining a 
connection to one queue then switching to the 2nd queue.


On Tue, 10 Dec 2024, at 15:00, David Cole wrote:
> I have a process where I am consuming a message on a "status" queue. I make 
> connection to an ActiveMQ server, create a session, create a consumer to 
> "status" with a JMSCorrelationID set, start the connection and receive a 
> message.
> 
> Apache.NMS.IConnectionFactory factory = new 
> Apache.NMS.ActiveMQ.ConnectionFactory(url);
> Apache.NMS.IConnection connection = factory.CreateConnection();
>                 
> sessionConsume = 
> connection.CreateSession(Apache.NMS.AcknowledgementMode.AutoAcknowledge);
> 
> Apache.NMS.IDestination sourceQueue = sessionConsume.GetQueue("status");
> string filter = string.Format("JMSCorrelationID='{0}'", correlationID);
> Apache.NMS.IMessageConsumer consumer = 
> sessionConsume.CreateConsumer(sourceQueue,filter, true);
> 
> connection.Start();
> Apache.NMS.ITextMessage message = consumer.Receive(new TimeSpan(0, 0, 
> ccMessageWait)) as Apache.NMS.ITextMessage;
> if (message != null)
> {
>    //do something with the message
> }
> 
> This works great. When there is no message there, however, I want it to check 
> a 2nd queue. And here is where this gets unstuck.
> 
> if (message != null)
> {
>    //do somethign with the message
> } else
> {
>    //Stop the current Connection, before opening again for OBQ
>    //consumer.Close();
>    //consumer.Dispose();
>    //sourceQueue.Dispose();
>    //connection.Stop();
>    sourceQueue = sessionConsume.GetQueue("other");
>    consumer = sessionConsume.CreateConsumer(sourceQueue, filter, true);
>    connection.Start();
>    message = consumer.Receive(new TimeSpan(0, 0, ccMessageWait)) as 
> Apache.NMS.ITextMessage;
>    if (message != null)
>    {
>        ///ideally  there's a message here.....but alas.
>    }
>    
> }
> 
> I've tried creating whole new connections, new consumers, new queue object 
> (IDestination), I've tried stopping connection, then starting connection, 
> disposing consumers etc.
> 
> Basically I want to connect to "status" queue for that CorrelationID, and if 
> nothing there, disconnect and connect to "other" queue, and expect to find a 
> message there.
> 
> Regards
> David
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@activemq.apache.org
> For additional commands, e-mail: users-h...@activemq.apache.org
> For further information, visit: https://activemq.apache.org/contact
> 
> 
> 

Reply via email to