2012-04-08 105 views
1

我在下面的代碼成功執行沒有任何錯誤,但是當我執行list_queue命令時,它給了我沒有隊列。不知道問題出在哪裏。Rabbitmq消息沒有出現在隊列中從c#

下面的代碼根本沒有提供任何錯誤。我的機器是Windows 7 64x,安裝了AMPQ運行時64位並使用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 2012-04-09 09:59:47

相關問題