2012-04-19 3 views
2

私はプロデューサーとキュー( 'test.queue')にメッセージを送信することができました(また、私はもう一方で同じものを受け取ることができます) しかし、私は返信先( '確認')から返信メッセージを受信できませんでした。 receive()メソッド。 エラーはありませんが、消費者はmsgを受け取っていません。私からそれを取り除いてください。 コードを以下にされています: -ActiveMQ NMSとC#を使用して同期Request-Responseアプリケーションを実装する方法は?

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

イムないActiveMQの専門家が、私は(ほとんど1は、次の私は、NMSを考える:1)ほとんどのJMS実装で知っているあなたはへの接続の開始を()を呼び出す必要があります消費を開始する

+0

これは正しいです。Connectionでstart()を呼び出さないと、コンシューマはメッセージを受信しません。 –