2012-04-19 66 views
2

我可以發送郵件到隊列('test.queue')與製片人(也可以在另一端收到相同的郵件) 但我無法從回覆目的地('確認')收到回覆消息與消費者。 receive()方法。 沒有error.but消費者沒有收到任何msg.Please讓我走出來。 代碼已經給出如下: -如何使用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

請注意,它應該是消費者的同步接收器 – 2012-04-19 13:32:13

回答

2

我不是一個ActiveMQ的專家,但我知道,在大多數的JMS實現(我認爲NMS幾乎如下:1:1),你需要你的連接上調用Start()允許開始消費

+0

這是正確的,沒有對Connection的start()調用,消費者將不會收到任何消息。 – 2012-04-19 20:42:52