Maybe I missed it, but I don't understand what exactly the problem is. What
exactly do you mean by, "here is where this gets unstuck"?

Are you saying that when you try to receive a message from the "other"
queue a message is not consumed even though a message is actually on the
queue?


Justin

On Mon, Dec 9, 2024 at 8:01 PM David Cole <da...@andc.nz> 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