2012-04-08 11 views
1

以下のコードをエラーなく正常に実行していますが、list_queueコマンドを実行しているときに待ち行列が表示されません。問題がどこにあるのかわかりません。キューからRabbitmqメッセージが表示されない#

以下のコードはエラーを一切与えません。私のマシンはWindows 7 64x、AMPQランタイム64bitをインストールし、32x RabbitMqサーバーv.2.8.1を使用しています。

private void createExchange(string message) 
     { 
      var queName = Convert.ToString(ConfigurationManager.AppSettings["clientQueue"]); 
      var exchangeName = Convert.ToString(ConfigurationManager.AppSettings["clientExchange"]); 
      var hostName = Convert.ToString(ConfigurationManager.AppSettings["host"]); 

      _logger.Info("entered in create exchange"); 
      _logger.Info("queName: " + queName); 
      _logger.Info("exchangeName: " + exchangeName); 
      _logger.Info("hostName: " + hostName); 
      try 
      { 
       var connectionFactory = new ConnectionFactory(); 
       connectionFactory.HostName = "localhost"; 
       connectionFactory.UserName = "user1"; 
       connectionFactory.Password = "userpassword"; 

       using (IConnection connection = 
        connectionFactory.CreateConnection()) 
       { 
        _logger.Info("Conncection created"); 
        using (IModel model = connection.CreateModel()) 
        { 
         _logger.Info("Model is created"); 
         model.ExchangeDeclare(exchangeName, ExchangeType.Fanout, true); 
         model.QueueDeclare(queName, true, true, false, null); 
         model.QueueBind(queName, exchangeName, "", new Dictionary<string, object>()); 

         IBasicProperties basicProperties = model.CreateBasicProperties(); 
         model.BasicPublish(exchangeName, "", false, false, 
              basicProperties, Encoding.UTF8.GetBytes(message)); 
         _logger.Info("message: " + message); 
         _logger.Info("message published"); 

        } 
       } 
      } 
      catch(Exception ex) 
      { 
       _logger.Info("Error in create exchange"); 
       _logger.Info("InnerException:" + ex.InnerException); 
       _logger.Info("Message:" + ex.Message); 
       _logger.Info("StackTrace:" + ex.StackTrace); 
      } 
     } 

答えて

1

「排他的」キューを宣言しているように見えます。排他的キューは接続専用であるため、別の接続から操作することはできません(一覧表示を含む)。

あなたがそれをリストしたり、別の接続からの場合で何かを行うことができるようにしたい場合は

Model.QueueDeclare(queName, true, **false**, false, null) 

を試してみてください。

+0

スティーブ、感謝の仲間。出来た.... – Shax