RabbitMQ学习笔记-rabbitMQ是什么

分布式架构:一个请求由多个服务(服务或者系统)协同处理完成。

RabbitMQ:消息队列,或者说是一个消息中间键。

MQ功能:

  1. 削峰:不让系统直接访问系统,而是通过MQ,然后交给MQ去访问系统,使得访问的人员进行排队。(有排队就会导致比较慢,但是安全有次序。)
  2. 应用解耦:通过队列去访问系统,各个系统之间通过MQ去完成,也就会不会产生过多故障。
  3. 异步处理:A-B,并不要A收到B的确定消息才会执行操作。

MQ的分类:

  1. RabbitMQ: 和spring是一家公司的,使用AMQP(高级消息队列协议)基础上完成的,支持多种语言,缺点是商业版要付费。

  2. kafka:为大数据而生,有百万级TPS的,实时计算,吞吐量高,使用在日志采集等方面。缺点是,单机超过64个队列/分区,load会发生明显的飙高现象,队列越多,load越高,发送响应时间越长。消费失败不支持重试,支持消息顺序,但一代代理宕机后,会产生消息乱序,社区更新慢

  3. RocketMQ:由阿里开发,金融行业需要,使用java语言实现,参考了kafka,一般常用于订单,交易,充值,流计算,消息推送,日志处理,bingblog分发等场景。

    1. 优点:单机吞吐10w级别,信息可以做到0丢失,MQ功能比较完善,还是分布式,拓展性号,支持10亿级别的消息堆积,不会因为堆积而导致性能下降。
    2. 缺点:这次客户端语言不多,目前是java和C++,其中C++还不成熟,社区活跃一般。

初级部分:

RabbitMQ:是一个消息中间件,可以当做一个快递站,快递员发包裹到快递站,然后本地快递员将快递发给用户。

生产者:生产者 - > mq (一个交换机可以绑定多个队列) -> 消费者,一般情况下是一个队列对应一个消费者,如果两个一个队列对应两个消费者,那么就只有一个消费者收到消息,这就想当与只有一个包裹是不可能发给两个人的。

核心部分:

  1. 简单模式
  2. 工作模式
  3. 发布订阅模式
  4. 路由模式
  5. 主题模式
  6. 发布确认模式

RabbitMQ学习笔记-rabbitMQ是什么_第1张图片

connection:publisher/consumer 和 broker之间的TCP连接。

Channel:如果每一次访问RabbitMQ都建立一个Connection,在消息量大的时候建立TCP Connection的开销是巨大的,效率也比较低。channel作为轻量级的Connection极大减少了操作系统建立TCP connection的开销。

安装rabbitMQ:

官网:https://www.rabbitmq.com

下载页面:https://www.rabbitmq.com/download.html

我一般使用docker安装

# latest RabbitMQ 3.10
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.10-management

其他安装方式:(手动安装)

  1. 首先现在linux下的压缩包,或者使用工具将安装包上传到linux系统。

  2. 安装rabbitMQ的支持依赖

    1. rpm -ivh erlang-21.3-1.el7.x86_64.rpm
    2. yml install socat -y
    3. rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm
  3. 添加常用命令:

    1. 添加开机启动chkconfig rabbitmq-server on
    2. 启动服务
      1. 找到安装路径
      2. sbin下的service 里边的rabbitmq-server start /sbin/service rabbitmq-server start
      3. 查看服务状态/sbin/service rabbitmq-server status
      4. 停止服务/sbin/service rabbitmq-server stop
      5. 开启后台web管理插件rabbitmq-plugins enable rabbitmq_management(docker安装的不要这么操作)
      6. 使用账号访问,一般是账号密码都是guest,当然你必须保证你的端口号开放,如果云服务器的话,15972,注意ip地址,如果有域名的话,那么可以在域名后添加:15672直接访问.
      7. 如果不能直接访问的话,检查一下防火墙,systemctl stop firewalld,这个命令关闭本次防火墙,systemctl enable firewalld可以下次开机也关闭防火墙,systemctl status firewalld可以查看当前系统防护墙状态
      8. 添加一个新用户,如果是使用虚拟机的话,一般是不能直接使用guest登录的,当然这个我没碰到过
        1. 创建一个账号rabbitmqctl add_user 用户名 密码
        2. 设置用户角色 rabbitmqctl set_user_tags admin administractor
        3. 设置用户权限
          set_permission[-p ]
          举例:
          rabbitmqctl set_permission -p " / " admin ".* " ".* " " .* "用户user_admin具有/vhost1这个vritual host中的所有资源的配置,写,读权限。
        4. 当前用户和角色
          rabbitmqctl list_user

你可能感兴趣的:(#,rabbitMQ,java-rabbitmq,rabbitmq,学习)