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: [email protected]
> For additional commands, e-mail: [email protected]
> For further information, visit: https://activemq.apache.org/contact
>
>
>