2012-04-08 218 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

相关问题