首页 > 代码库 > 一个winform带你玩转rabbitMQ(三) 附源码

一个winform带你玩转rabbitMQ(三) 附源码

第一章. 安装,简介和初探

第二章. exchange,queue,binding介绍 订阅发布 工作队列(消费者集群)

本章收尾 介绍API CommandLine 以及其他功能

源码地址 https://github.com/dubing/MaoyaRabbit


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中在下图所示处区分

  

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

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

 

上一章节介绍了 消费者如何做分布式或者说是集群,很多同学可能对server端的集群也很感兴趣,鉴于单机的应用程序这里就不多介绍了,给出官网的传送门

http://www.rabbitmq.com/clustering.html

本篇收尾 有点狗尾续貂的感觉 旨在按照之前的计划 放出源码 希望对大家有帮助 

 

一个winform带你玩转rabbitMQ(三) 附源码