初识Rabbit消息队列

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题。实现高性能、高可用、可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。

接下来我们来开始学习Rabbit消息队列

  • 安装Rabbit:

安装Rabbit不只是单纯的安装Rabbit  使用Rabbit  需要先安装Erlang环境,

安装时傻瓜式教学直接下一步下一步就可以了不需要额外的点什么

  • 激活Rabbit服务

下载好了之后进入到该RabbiMQ-servert的sbin文件夹里面进行激活服务

 在此文件夹里面进行dose命令

rabbitmq-plugins enable rabbitmq_management

然后重启服务就可以啦dose命令如下:

net stop rabbitmq && net start rabbitmq

然后进入Rabbit网址:默认的网址是:localhost:15672  密码和用户名都是:guest

页面如下:

 

登录后页面如下:

  • 写入rabbitMQ

我们创建一个控制台应用(.NET Framework):

里面编写如下代码:

  static void Main(string[] args)
        {
           //创建一个链接的工厂类
            ConnectionFactory connectionFactory = new ConnectionFactory() { HostName = "localhost", UserName = "guest", Password = "guest", Port = 5672 };
            //创建链接
            using (var conn = connectionFactory.CreateConnection())
            {
                //创建通道
                using (var chapp = conn.CreateModel())
                {
                    创建一个交换机
                    //chapp.ExchangeDeclare("交换机名字","交换机类型");
                    chapp.ExchangeDeclare("myexchang", "direct");
                    创建一个消息队列
                    //chapp.QueueDeclare("消息队列名称",是否持久性,排外性,是否自动删除,参数);
                    chapp.QueueDeclare("FGY",false,false,false,null);
                    //把交换机和队列进行关联
                    //chapp.QueueBind("消息队列名称", "交换机名字", "关联名");
                    chapp.QueueBind("FGY", "myexchang", "keyy");
                    把消息放在交换机里面
                    byte[] byt = Encoding.UTF8.GetBytes("卧槽");
                     //chapp.BasicPublish("交换机名字", "关联名", 属性,参数);
                    chapp.BasicPublish("myexchang", "keyy", null,byt);

                }
            }
        }
}

运行后在rabbit页面里面可以看到存储的消息如图所示

 

 基础的写入rabbit就完成了

接下里就是读取

  • 读取RabbitMQ

我们写一个消息消费的事件用于读取消息:
 

         //消息消费的事件
        private static void Shi(object sander,BasicDeliverEventArgs e) {
            byte[] aa = e.Body;
            string msg = Encoding.UTF8.GetString(aa);
            Console.WriteLine(msg);
        
        }

在主函数里面调用一下这个方法

 static void Main(string[] args)
        {
            //创建一个链接的工厂类
            ConnectionFactory connectionFactory = new ConnectionFactory() { HostName = "localhost", UserName = "guest", Password = "guest", Port = 5672 };
            //创建链接
            using (var conn = connectionFactory.CreateConnection())
            {
                //创建通道
                using (var chapp = conn.CreateModel())
                {               
                    //绑定信息消费事件
                    EventingBasicConsumer Consumer = new EventingBasicConsumer(chapp);
                    Consumer.Received += Shi;
                    //消费消息
                    // chapp.BasicConsume("消息队列名词",是否立马应答,绑定的事件);
                    chapp.BasicConsume("FGY",false, Consumer);
                    //Console.ReadLine();放在里面和放在外面的区别:放在外面对象会被释放不会执行
                    Console.ReadLine();
                }
            }
        }

效果如下:

都到这儿了继续记录一下消息队列的类型区别:

  • 消息队列的区别

 消息队列就先了解到这儿吧。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值