RabbitMq学习一入门篇(hello world)
-
简介
-
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java,也是众多消息队列中表现不俗的一员,作用就是提高系统的并发性,将一些不需要及时响应客户端且占用较多资源的操作,放入队列,再由另外一个线程,去异步处理这些队列,可极大的提高系统的并发能力。
-
-
安装
-
“hello world”(.NET中Rabbimq使用)
1.实例参考官网教程
2.使用官网提供的c#操作类库RabbitMQ.Client
我们先分别创建两个控制台程序 一个用来发送消息到rabbitmq 消息代理作为什么生产者;另外一个从中读取进行消费作为消费者。
如:p代表生成者,c代表消费者,中间的部分代表消息队列
生成者的代码如下:
public static void RunSend() { ConnectionFactory connectionFactory = new ConnectionFactory() { HostName = "192.168.35.129", Port = 5672, Password = "123", UserName = "mquser" }; //建立连接rabbitmq 消息代理服务器。 using (IConnection conn = connectionFactory.CreateConnection()) { //创建Channel对象 using (IModel channel = conn.CreateModel()) { //声明队列 channel.QueueDeclare("hello", durable: false, exclusive: false, autoDelete: false, arguments: null); //消息 ,此处是简单的字符串,你也可以定义复杂的消息体 string msg = "Hello World"; var body = Encoding.UTF8.GetBytes(msg); //把消息放到队列中 channel.BasicPublish(exchange:"", routingKey:"hello", basicProperties:null, body:body); Console.WriteLine("send {0}",msg); } } }
消费者的代码如下:
public static void RunReceive() { ConnectionFactory connectionFactory = new ConnectionFactory() { HostName = "192.168.35.129", Port = 5672, Password = "123", UserName = "mquser" }; using (IConnection conn = connectionFactory.CreateConnection()) { using (IModel channel = conn.CreateModel()) { //注意:在 send.CS 中也声明了队列Hello,这里为什么要再次声明 //第一:QueueDeclare 实现了幂等性,创建的时候如果已经存在,就不会再次创建。 //第二:因为 两边都进行创建,不用考虑 生产者 和消费者 启动的顺序了。 channel.QueueDeclare("hello", durable: false, exclusive: false, autoDelete: false, arguments: null); //创建事件驱动的消费者类型;建议使用此种方式,不要使用while(true) //理由吗 哈哈 看看王清培的博客吧。不稳定不优雅。。。 var consumer = new EventingBasicConsumer(channel); consumer.Received += (sender, e) => { var body = e.Body; var message = Encoding.UTF8.GetString(body); Console.WriteLine(" [x] Received {0}", message); }; channel.BasicConsume(queue: "hello", noAck: true, consumer: consumer); Console.WriteLine(" Press [enter] to exit."); Console.ReadLine(); } } }
输出
好了rabbitmq入门篇讲完了,是不是很简单。
个人主要研究:金融系统、MIS系统、人力资源管理系统、数据采集系统、权限管理系统等等系统。主攻C#开发语言,Oracle、Sql Server,WCF和Remoting通信。
如需联系可加QQ:442389681 Email:lxc880615@163.com 手机:18922735098
QQ群交流:186841119 (请注明来自博客园)
博客园地址:http://www.cnblogs.com/jara/ http://www.cnblogs.com/luoyuhao/
提示:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果觉得还有帮助的话,可以点一下右下角的【推荐】,希望能够持续的为大家带来好的技术文章!想跟我一起进步么?那就【关注】我吧。
如果对文章有任何问题,都可以在评论中留言,我会尽可能的答复您,谢谢您的阅读
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库