2012-04-19 2 views
2

Я мог отправлять сообщения в очередь ('test.queue') с производителем (также я мог бы получить то же самое на другом конце) Но я не мог получить ответ MSN от адресата ответа ('confirm') с потребителем. принимаем() метод. Нет error.but потребитель не получает никаких сообщений. Пожалуйста, вытащите меня из него. Кодекса приведен ниже: -Как реализовать синхронное приложение Request-Response с помощью activeMQ NMS и C#?

class Program 
{ 
    private const String URI = "tcp://localhost:61616"; 
    private const String DESTINATION = "test.queue"; 
    static void Main(String[] args) 
    { 
     ConnectionFactory connectionFactory = new ConnectionFactory(URI); 
     connectionFactory.ClientId = connectionFactory.ClientIdGenerator.GenerateId(); ; 
     IMessageProducer prod; 
     String s = String.Empty; 
     while (s.ToLower() != "exit") 
     { 
      s = Console.ReadLine(); 
      ISession ses = connectionFactory.CreateConnection().CreateSession(); 
      prod = ses.CreateProducer(); 
      IMessage msg=ses.CreateTextMessage(s); 
      NmsDestinationAccessor destinationResolver = new NmsDestinationAccessor(); 
      IDestination destination = destinationResolver.ResolveDestinationName(ses, DESTINATION); 
      IDestination replyDestination = destinationResolver.ResolveDestinationName(ses, "confirm"); 
      IMessageConsumer consumer = ses.CreateConsumer(replyDestination); 
      prod.Send(destination, msg); 
      IMessage im= consumer.Receive(); 
      ses.Commit(); 
      Console.WriteLine(im.ToString()); 
     } 
    } 
} 
+0

Обратите внимание, что это должно быть синхронное получение для потребителя –

ответ

2

Im не специалист ActiveMQ, но я знаю, что в большинстве реализаций JMS (которые я думаю, НМС в значительной степени следует 1: 1) необходимо вызвать Start() в вашем подключении к разрешить начало потребления

+0

Это правильно, без вызова start() в Connection потребитель не получит никаких сообщений. –