Hi,
I am new to ActiveMQ and I am trying to write a basic publisher and
listener.
I have used several code formats and can always send the initial message to
the listener without any issue but no matter what I try, I can not get a
response. The response from the listener does not fail, but it is never
received by my publisher. When I check the ActiveMQ queues I can see what
looks like the temp queue with a pending message but for some reason my
comsumer.receive always timesout.
Any help would be appreciated.
My pulbisher code is:
//Create the Connection
var connectionFactory = new ConnectionFactory(ListenerAddress);
using (var connection = connectionFactory.CreateConnection())
{
using (var session =
connection.CreateSession(AcknowledgementMode.ClientAcknowledge))
{
//var queue = session.CreateTemporaryQueue();
//using (var consumer = session.CreateConsumer(queue))
//{
IDestination destination =
SessionUtil.GetDestination(session, QueueName);
ITemporaryQueue replyTo =
session.CreateTemporaryQueue();
using (IMessageConsumer consumer =
session.CreateConsumer(destination))
using (IMessageProducer producer =
session.CreateProducer(destination))
{
IMessage request =
session.CreateTextMessage(MessageText);
request.NMSReplyTo = replyTo;
producer.Send(request);
request =
consumer.Receive(TimeSpan.FromMilliseconds(8000));
using (IMessageProducer responder =
session.CreateProducer(request.NMSReplyTo))
{
IMessage response =
session.CreateTextMessage("RESPONSE");
responder.Send(response);
}
}
using (IMessageConsumer consumer =
session.CreateConsumer(replyTo))
{
ITextMessage response =
consumer.Receive(TimeSpan.FromMilliseconds(3000)) as ITextMessage;
}
}
}
_myExceptionHandler.HandleException(ExceptionLevels.ExceptionLevel.Debug,
"Message sent successfully");
return true;
}
My Listener code is:
public void OnMessage(IMessage message)
{
try
{
// Found a new message event
Message = message as ITextMessage;
// Process the received message here
// Forward the message to the Observers
PublishMesssage(Message.Text);
// Lets process the response
using (session = connection.CreateSession())
{
// We are replying to the queue stored in NMSReplyTo
// We will echo the same message back to the sender
IDestination destination = message.NMSReplyTo;
if (destination != null)
{
ITextMessage response =
session.CreateTextMessage(Message.Text);
response.NMSCorrelationID =
message.NMSCorrelationID;
using (IMessageProducer responder =
session.CreateProducer(destination))
{
IMessage response2 =
session.CreateTextMessage("RESPONSE");
responder.Send(response2);
}
}
Message = null;
Semaphore.Set();
}
}
catch (Exception ex)
{
_myExceptionHandler.HandleException(ExceptionLevels.ExceptionLevel.Error,
ex);
}
}
thanks
Dave
--
View this message in context:
http://activemq.2283324.n4.nabble.com/No-response-being-received-consumer-Receive-always-timeout-tp3653090p3653090.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.