zoukankan      html  css  js  c++  java
  • 自己的win7第一次使用RabbitMQ

    使用的过程中参照https://www.cnblogs.com/longlongogo/p/6489574.html所写的内容,结合自己使用过程中遇到的问题总结如下

    一、环境搭建

    1、由于RabbitMQ使用Erlang语言编写,所以先安装Erlang语言运行环境。我的是win764位,下载地址:http://www.erlang.org/downloads,本人下载了  OTP 19.2 Windows 64-bit Binary File,下载后直接安装就可以, 安装后手动编辑“path”加入安装路径D:erl9.2in。打开 cmd ,输入 erl 后回车,如果看到如下的信息,表明安装成功

    2、安装RabbitMQ服务端

          下载地址:http://www.rabbitmq.com/,下载后安装,可以在cmd将cd到安装目录(.. abbitmq_server-3.2.3sbin)下使用命令rabbitmq-service install    rabbitmq-service enable将其安装为服务

          

        然后使用rabbitmq-service start启动服务。使用rabbitmqctl status查看启动状态

        然后发现报错了Error: unable to perform an operation on node,查找资料,

    1. 将C:Users{用户名}.erlang.cookie 复制到 C:WindowsSystem32configsystemprofile 目录。
    2. 重启rabbitMQ服务

       然后解决了,然后使用命令

        rabbitmqctl  add_user  JC JayChou   //创建用户JC密码为JayChou
        rabbitmqctl  set_permissions  JC ".*"  ".*"  ".*"    //赋予JC读写所有消息队列的权限
        rabbitmqctl  set_user_tags JC administrator    //分配用户组
    增加了自己的管理用户,并使用rabbitmq-plugins enable rabbitmq_management开启rabbitmq_management插件,在web界面查看和管理RabbitMQ服务

     暂时就到这里了

    三、创建第一个发送客户端

     

     

    发送成功,运行了 两次,然后在web页看到队列有两条数据。

     下面写个接收端:

     

    四、RabbitMQ基本信息

       1、RabbitMQ的基本结构

     Channel:信道,仅仅创建了客户端到Broker之间的连接Connection后,客户端还是不能发送消息的。需要在Connection的基础上创建Channel,AMQP协议规定只有通过Channel才能执行AMQP的命令,一个Connection可以包含多个Channel。之所以需要Channel,是因为TCP连接的建立和释放都是十分昂贵的。 

    2、方法:

      QueueDeclare、ExchangeDeclare、QueueBind、BasicPublish

    3、RabbitMQ的四种Exchange:

      fanout:把所有发送到该Exchange的消息投递到所有与它绑定的队列中。主要用于发布/订阅的一些场景,如用户注册了我们的网站后,我们通过短信和邮件两种方式通知用户。

          direct:把消息投递到那些binding key与routing key完全匹配的队列中。

          topic:将消息路由到binding key与routing key模式匹配的队列中。

       header类型exchange不是通过routingKey进行路由的,而是通过Headers

    4、消息确认

      生产者端消息确认(tx机制和Confirm模式)、消费者端消息确认(自动确认和显示确认)

    5、RabbitMQ的消费模式

      EventingBasicConsumer、BasicGet、QueueBaicConsumer

    6、Qos(服务质量)

       RabbitMQ提供的Qos(服务质量)可以完美解决上边的问题,使用Qos时,Broker不会再把消息一股脑的发送给消费者,我们可以设置每次传输给消费者的消息条数n,消费者把这n条消息处理完成后,再获取n条数据进行处理,这样就不用担心消息丢失、服务端内存爆满的问题了,因为没有发送的消息状态都是Ready,所以当我们新增一个消费者时,消息也可以立即发送给新增的消费者。注意Qos只有在消费端使用显示确认时才有效,使用Qos的方式十分简单,在消费端调用 channel.BasicQos() 方法即可

  • 相关阅读:
    Mimblewimble:新型的隐私保护协议
    权益证明生态系统
    理解去中心化身份
    TPS 是一种糟糕的评价标准
    以太坊 2.0 :双生以太奇谭
    以太坊 2.0:信标链
    以太坊 2.0:验证者详解
    论共识机制
    以太坊钱包开发系列
    将不确定变成确定~LINQ DBML模型可以对应多个数据库吗
  • 原文地址:https://www.cnblogs.com/ywls/p/12991265.html
Copyright © 2011-2022 走看看