首页 > 代码库 > 带你玩转rabbitMQ 附源码

带你玩转rabbitMQ 附源码

RabbitMQ API

  RabbitMQ Server提供了丰富的http api。

  举个列子

  

  需要HTTP基本身份验证。默认的用户名/密码为guest/guest。

  这些返回值得意义我从官网搬来解释,为了避免翻译的问题导致大家理解的误差这里直接给出原文

cluster_nameThe name of the entire cluster, as set with rabbitmqctl set_cluster_name.
erlang_full_versionA string with extended detail about the Erlang VM and how it was compiled, for the node connected to.
erlang_versionA string with the Erlang version of the node connected to. As clusters should all run the same version this can be taken as representing the cluster.
exchange_typesA list of all exchange types available.
listenersAll (non-HTTP) network listeners for all nodes in the cluster. (See contexts in /api/nodes for HTTP).
management_versionVersion of the management plugin in use.
message_statsA message_stats object for everything the user can see - for all vhosts regardless of permissions in the case of monitoring and administrator users, and for all vhosts the user has access to for other users.
nodeThe name of the cluster node this management plugin instance is running on.
object_totalsAn object containing global counts of all connections, channels, exchanges, queues and consumers, subject to the same visibility rules as for message_stats.
queue_totalsAn object containing sums of the messagesmessages_ready and messages_unacknowledged fields for all queues, again subject to the same visibility rules as for message_stats.
rabbitmq_versionVersion of RabbitMQ on the node which processed this request.
statistics_db_nodeName of the cluster node hosting the management statistics database.
statistics_levelWhether the node is running fine or coarse statistics.

  又或者通过api查询虚拟主机
  
  许多api的URI需要一个虚拟主机路径的一部分的名字,因为名字只有唯一在一个虚拟主机识别物体。作为默认的虚拟主机称为“/”,这??将需要被编码为“%2F”。

  在我的demo程序中对应的api功能可以通过这里的功能来实现

  

  其更丰富的功能可以参考官网说明文档 http://hg.rabbitmq.com/rabbitmq-management/raw-file/3646dee55e02/priv/www-api/help.html

  以及 http://hg.rabbitmq.com/rabbitmq-management/raw-file/rabbitmq_v3_3_5/priv/www/api/index.html

  一般来说我们常用的我在应用程序中已经给出 例如查看所有队列等

  


 RabbitMQ CommandLine

  除了丰富的http api,rabbitmq server自然也有其很全面命令行。

  例如查询所有exchange。

  

  查询所有队列以及他们包含的消息数目

   

  rabbitmqctl更多的命令说明参考 http://www.rabbitmq.com/man/rabbitmqctl.1.man.html


Message的BasicGet于consume的区别

   consume的功能上一张介绍过,basicget更偏向于我们平时用过的其他类型的MessageQueue,它就是最基本的接受消息,consume的消费针对basicget来说属于一个长连接于短连接的区别。

消费者关系一旦确定,基本上默认它就是在侦听通道的消息是否在生产。而basicget则是由客户端手动来控制。

  在demo中在下图所示处区分

  

  如果你选择了消费消息,那么基本上代码层面是这样来完成的

1
2
3
4
5
6
7
8
9
var consumer = new QueueingBasicConsumer(channel);
channel.BasicQos(0, 1,false);
channel.BasicConsume(queue.name, rbAckTrue.Checked, consumer);
while (true)
{
    vare = consumer.Queue.Dequeue();
    MessageBox.Show(string.Format("队列{0}获取消息{1},线程id为{2}", queue.name, Encoding.ASCII.GetString(e.Body), Process.GetCurrentProcess().Id));
    Thread.Sleep(1000);
}

带你玩转rabbitMQ 附源码