• 关于RabbitMQ


     1. 生产者: 在现实生活中就好比制造商品的工厂,他们是商品的生产者。生产者只意味着发送。发送消息的程序称之为一个生产者。

    2. 队列:rabbitMQ就像一个仓库,一个仓库里面可以 有很多队列,每个队列才是服务器之间消息通信的载体。

    3.消费者:消费者就好比是从商店购买或从仓库取走商品的人,消费的意思就是接收。消费者是一个程序,主要是等待接收消息。

    4.交换器:在生产者和消息队列之间的交换器,功能类似于网络宽带的交换机,可以根据不同的关键字,将信息发送到不同的队列。

     

     

     

     

    MQ不能进行批量的消息处理,你看到的传输再多也只是消息被一条一条的存入队列,消费者从队列中一条一条的取出。这跟kafKa有区别,所以在效率上比不上kafKa,但是MQ主打的是稳定

    每次消费者取出消息时会通知队列,我拿到了,当队列接收到这条消息,就会把消息删除,这是默认的ACK机制

    如果在接收消息之后,消费者挂掉,或者任何情况没有返回ack,队列中这条消息将不会删除,可以一直存着,等待其他消费者来取。    

    注意,但是如果设置不返回ack,在不断的发送消息到队列又不删除,会导致MQ仓库  boom~~~~

    以上内容参考文章:https://www.cnblogs.com/dwlsxj/p/RabbitMQ.html

    RabbitMQ安装:

    安装erlang的依赖:
    yum -y install epel-release
    yum clean all
    yum makecache
    yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel bzip2 gtk+* mesa* freeglut*


    wget https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.2/wxWidgets-3.1.2.tar.bz2
    bzip2 -d wxWidgets-3.1.2.tar.bz2
    tar -xvf wxWidgets-3.1.2.tar
    cd wxWidgets-3.1.2
    ./configure --with-opengl --enable-debug --enable-unicode
    make && make install
    ldconfig

    下载并安装ERLANG
    wget http://erlang.org/download/otp_src_22.0.tar.gz
    tar -zxvf otp_src_22.0.tar.gz -C /usr/local/
    cd /usr/local/otp_src_22.0/
    ./configure --prefix=/usr/lib/erlang --without-javac --disable-javac
    make && make install
    /usr/lib/erlang/bin/erl -version
      Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 10.4

    配置环境变量
    echo 'export PATH=/usr/lib/erlang/bin:$PATH' >>/etc/profile
    source /etc/profile

    下载rebbitmq包并安装
    wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.15/rabbitmq-server-generic-unix-3.7.15.tar.xz
    xz -d rabbitmq-server-generic-unix-3.7.15.tar.xz
    tar -xvf rabbitmq-server-generic-unix-3.7.15.tar
    mv rabbitmq_server-3.7.15/ /usr/local/rabbitmq
    echo 'export PATH=/usr/local/rabbitmq/sbin:$PATH'>>/etc/profile
    source /etc/profile

    启动rabbitmq-server
    rabbitmq-server (加 -detached 为后台启动)

    检查服务启动状态
    netstat -lnpt|grep beam
    netstat -lnpt|grep :15672

    启动web管理插件
    rabbitmq-plugins enable rabbitmq_management

    添加远端登录账户
    #添加用户 admin 密码为 123456
    rabbitmqctl add_user admin 123456

    #将admin 设置为管理员权限
    rabbitmqctl set_user_tags admin administrator

    #将admin 设置为远端登录
    rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

    重启rabbitmq-server并测试访问
    rabbitmq-server -detached
    rabbitmqctl stop_app
    ###################################
    报错:
    [root@kvm2 ~]# rabbitmq-server
    ERROR: epmd error for host kvm2: timeout (timed out)
    解决:(添加主机名即可)
    [root@kvm2 ~]# vim /etc/hosts
    127.0.0.1 kvm2 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ###################################

    浏览器登录rabbitmq:
    http://IP:15672
    账号:admin
    密码:123456

    RabbitMQ节点绑定到端口(打开服务器TCP套接字)以接受客户端和CLI工具连接。其他进程和工具(如SELinux)可能会阻止RabbitMQ绑定到端口。发生这种情况时,节点将无法启动。CLI工具,客户端库和RabbitMQ节点也打开连接(客户端TCP套接字)。防火墙可以防止节点和CLI工具相互通信。

    各端口解释:

    4369:epmd,RabbitMQ节点和CLI工具使用的对等发现服务
    5672,5671:AMQP 0-9-1和1.0客户端使用没有和使用TLS
    25672:用于节点间和CLI工具通信(Erlang分发服务器端口),并从动态范围分配(默认情况下限于单个端口,计算为AMQP端口+ 20000)。除非确实需要这些端口上的外部连接(例如,群集使用联合或CLI工具在子网外的计算机上使用),否则不应公开这些端口。有关详情, 请参阅网络指南
    35672-35682:由CLI工具(Erlang分发客户端端口)用于与节点通信,并从动态范围(计算为服务器分发端口+ 10000到服务器分发端口+ 10010)进行分配。有关详情, 请参阅网络指南
    15672:HTTP API客户端,管理UI和rabbitmqadmin(仅当启用了管理插件时)
    61613,61614:没有和使用TLS的STOMP客户端(仅当启用了STOMP插件时)
    1883,8883 :( 如果启用了MQTT插件,则没有和使用TLS的MQTT客户端
    15674:STOMP-over-WebSockets客户端(仅当启用了Web STOMP插件时)
    15675:MQTT-over-WebSockets客户端(仅当启用了Web MQTT插件时)
    可以将RabbitMQ配置 为使用不同的端口和特定的网络接口。

                           如果觉得文章不错,就动动小手点下 “好文要顶” 和 “推荐”,谢谢!!!

                                                 转载必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作!

                               QQ群:264092835   欢迎你的加入
                              该文章为原创,转载请注明原出处   谢谢合作                                                                                                                                                                                 

  • 相关阅读:
    查看jvm的cg情况
    什么是json
    httpclient工具类
    mysql 优化思路(1)
    mysql存取日期出问题
    springboot和tomcat jar包冲突
    递归
    如何去理解return?
    js BOM判断当前窗口是否最顶层。
    个人笔记,关于ajax 如果没有请求成功不允许再次请求的方法。
  • 原文地址:https://www.cnblogs.com/smlile-you-me/p/10978262.html
Copyright © 2020-2023  润新知