zoukankan      html  css  js  c++  java
  • Linux下安装RabbitMQ

    RabbiTMQ概述

      RabbitMQ轻量级,易于在内部和云中部署。它支持多种消息传递协议。RabbitMQ可以部署在分布式和联合配置中,以满足高规模,高可用性要求。

      RabbitMQ可在许多操作系统和云环境中运行,并为大多数流行语言提供各种开发人员工具。

      RabbitMQ是一个在AMQP基础上完成的,可复用的企业消息系统。它是由Erlang语言开发。

      AMQP:Advanced Message Queue,高级消息队列协议。他是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。

     1 RabbitMQ 最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。具体特点包括:<!--more-->
     2 
     3 可靠性(Reliability):RabbitMQ使用一些机制来保证可靠性,如持久化、传输确认、发布确认。
     4 灵活的路由(Flexible Routing):在消息进入队列之前,通过 Exchange 来路由消息的。
     5 消息集群(Clustering):多个 RabbitMQ 服务器可以组成一个集群,形成一个逻辑 Broker 。
     6 高可用(Highly Available Queues):队列可以在集群中的机器上进行镜像,使得在部分节点出问题的情况下队列仍然可用。
     7 多种协议(Multi-protocol):RabbitMQ支持多种消息队列协议,比如STOMP、MQTT等。
     8 多语言客户端(Many Clients):RabbitMQ 几乎支持所有常用语言,比如 Java、.NET、Ruby 等。
     9 管理界面(Management UI):RabbitMQ 提供了一个易用的用户界面,使得用户可以监控和管理消息 Broker 的许多方面。
    10 跟踪机制(Tracing):如果消息异常,RabbitMQ 提供了消息跟踪机制,使用者可以找出发生了什么。
    11 插件机制(Plugin System):RabbitMQ 提供了许多插件,来从多方面进行扩展,也可以编写自己的插件。

    常用术语

     1 Broker:消息队列服务器的实体,是一个中间件应用,负责接收消息生产者的消息,然后将消息发送至消息接收者或其他的Braker
     2 Exchange:消息交换机,是消息第一个到达的地方,消息通过它指定的路由规则,分发到不同的消息队列中去。
     3 Queue:消息队列,消息通过发送和路由之后最终达到的地方,到达Queue的消息即进入逻辑上等待消费的状态。每个消息都会被发送到一个或多个队列。
     4 Binding:绑定,它的作用就是把Exchange和Queue按照路由规则绑定起来,也就是Exchange和Queue之间的虚拟链接。
     5 Routing Key:路由关键字,Exchange根据这个关键字进行消息投递。
     6 Virtual host:虚拟主机,是对Broker的虚拟划分,将消费者、生产者和它们依赖的AMQP相关结构进行隔离,一般都是为了安全考虑。比如:我们可以在一个Broker中设置多个虚拟主机,对不同用户进行权限的分离。
     7 Connection:连接。代表生产者、消费者、Broker之间进行通信的物理网络。
     8 Channel:消息通道,用于连接生产者和消费者的逻辑结构。在客户端每个连接里,可建立多个Channel,每个Channel代表一个会话任务,通过Channel可以隔离同一个连接中的不同交互内容。
     9 Producer:消息生产者。
    10 Consumer:消息消费者。

    安装地址

    RabbitMQ安装地址

    1 wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.2/rabbitmq-server-3.6.2.zip 

    由于RabbitMQ是erlang语言开发的所以依赖erlang语言环境先安装erlang

    注意这里看下erlang语言兼容RabbitMQ版本系列官方有说明https://www.rabbitmq.com/download.html

    1 http://www.erlang.org/downloads 

    我这里是安装的18.3版本的根据你要安装的rabbitmq版本做选择

    1 wget http://erlang.org/download/otp_src_18.3.tar.gz

     解压

    1 tar -xzvf otp_src_18.3.tar.gz
    2 cd /opt/otp_src_18.3

    创建安装目录

    1 mkdir /opt/erlang183

    配置安装路径

    1 ./configure --prefix=/opt/erlang183

    编译安装

    1 make && make install

    配置环境变量

    1 vim /etc/profile
    2 添加路径/opt/erlang183/bin 

    使得文件生效

    1 source  /etc/profile

    验证是否erlang安装成功

     RabbitMQ安装

    下载包

    1 wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.2/rabbitmq-server-3.6.2.zip

    下载完成需要转换成tar文件

    1 xz -d rabbitmq-server-generic-unix-3.6.2.tar.xz 

    解压

    1 tar -xvf rabbitmq-server-generic-unix-3.6.2.tar

    添加环境变量

    1 vim /etc/profile
    2 把路径添加进去/opt/rabbitmq362/sbin
    3 并生效 source /etc/profile 

    启动与关闭服务查看状态

    1 进入sbin 启动服务:./rabbitmq-server -detached
    2 查看服务状态:./rabbitmqctl status
    3 关闭服务:./rabbitmqctl stop 

    常规命令

     1 #启动服务
     2 rabbitmq-server -detached 
     3 
     4 #查看帮助
     5 man rabbitmq-server
     6 参数解释:
     7 OPTIONS
     8        -detached    后台运行
     9            Start the server process in the background. Note that this will cause the pid
    10            not to be written to the pid file.
    11 
    12 rabbitmqctl status #查看rabbitmq状态
    13 
    14 #创建rabbitmq登录用户
    15 添加用户
    16 rabbitmqctl add_user [username] [password]
    17 添加权限
    18 rabbitmqctl set_permissions -p "/" [username] ".*" ".*" ".*"
    19 修改用户角色
    20 rabbitmqctl set_user_tags [username] administrator

    配置网页插件

    1 RabbitMQ网页管理的端口是15672,但是现在还不能访问,需要添加网页插件才能访问
    2 rabbitmq-plugins enable rabbitmq_management

    在此可以查看端口状态

    1 netstat -tunlp
    [root@localhost sbin]# netstat -tunlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      53825/beam.smp      
    tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
    tcp        0      0 0.0.0.0:4369            0.0.0.0:*               LISTEN      52011/epmd          
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      6621/sshd           
    tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      53825/beam.smp      
    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      6822/master         
    tcp6       0      0 :::5672                 :::*                    LISTEN      53825/beam.smp      
    tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
    tcp6       0      0 :::4369                 :::*                    LISTEN      52011/epmd          
    tcp6       0      0 :::22                   :::*                    LISTEN      6621/sshd           
    tcp6       0      0 ::1:25                  :::*                    LISTEN      6822/master         
    udp        0      0 0.0.0.0:68              0.0.0.0:*                           6410/dhclient       
    udp        0      0 0.0.0.0:111             0.0.0.0:*                           1/systemd           
    udp        0      0 0.0.0.0:915             0.0.0.0:*                           6259/rpcbind        
    udp6       0      0 :::111                  :::*                                1/systemd           
    udp6       0      0 :::915                  :::*                                6259/rpcbind    

    端口信息

     1 (epmd), 25672 (Erlang distribution)
     2 
     3 Epmd 是 Erlang Port Mapper Daemon 的缩写,在 Erlang 集群中相当于 dns 的作用,绑定在4369端口上。
     4 
     5 5672, 5671 (AMQP 0-9-1 without and with TLS)
     6 
     7 AMQP 是 Advanced Message Queuing Protocol 的缩写,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,专为面向消息的中间件设计。
     8 基于此协议的客户端与消息中间件之间可以传递消息,并不受客户端/中间件不同产品、不同的开发语言等条件的限制。Erlang 中的实现有 RabbitMQ 等。
     9 (if management plugin is enabled)
    10 
    11 通过 http://serverip:15672 访问 RabbitMQ 的 Web 管理界面,默认用户名密码都是 guest。(注意:RabbitMQ 3.0之前的版本默认端口是55672,下同)
    12 
    13 61613, 61614 (if STOMP is enabled)
    14 
    15 Stomp 是一个简单的消息文本协议,它的设计核心理念就是简单与可用性,官方文档,实践一下 Stomp 协议需要:
    16 
    17 一个支持 stomp 消息协议的 messaging server (譬如activemq,rabbitmq);
    18 一个终端(譬如linux shell);
    19 一些基本命令与操作(譬如nc,telnet)
    20 1883, 8883 (if MQTT is enabled)
    21 MQTT 只是 IBM 推出的一个消息协议,基于 TCP/IP 的。两个 App 端发送和接收消息需要中间人,这个中间人就是消息服务器(比如ActiveMQ/RabbitMQ),三者通信协议就是 MQTT 

    创建用户登录默认有个guest处于安全考虑只能在本地登录

    1 rabbitmqctl add_user admin admin123456

    修改角色权限

    1 rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

    设置标签

    1 rabbitmqctl set_user_tags admin administrator 

    查看用户访问

    1 rabbitmqctl list_permissions -p /
    [root@localhost sbin]# rabbitmqctl list_permissions -p /
    Listing permissions in vhost "/" ...
    guest    .*    .*    .*
    admin    .*    .*    .*

    登录Web界面

    常规命令

     1 rabbitmqctl status
     2 
     3 rabbitmqctl stop
     4 
     5 rabbitmqctl list_users  
     6 
     7 rabbitmqctl list_user_permissions guest
     8 
     9 rabbitmqctl add_user admin 123456
    10 
    11 rabbitmqctl set_user_tags admin administrator 
    12 
    13 rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" 

    rabbitmq-plugins命令

     rabbitmqctl命令

     1 Commands:
     2     stop [<pid_file>]
     3     stop_app
     4     start_app
     5     wait <pid_file>
     6     reset
     7     force_reset
     8     rotate_logs <suffix>
     9 
    10     join_cluster <clusternode> [--ram]
    11     cluster_status
    12     change_cluster_node_type disc | ram
    13     forget_cluster_node [--offline]
    14     rename_cluster_node oldnode1 newnode1 [oldnode2] [newnode2 ...]
    15     update_cluster_nodes clusternode
    16     force_boot
    17     sync_queue [-p <vhost>] queue
    18     cancel_sync_queue [-p <vhost>] queue
    19     purge_queue [-p <vhost>] queue
    20     set_cluster_name name
    21 
    22     add_user <username> <password>
    23     delete_user <username>
    24     change_password <username> <newpassword>
    25     clear_password <username>
    26     
    27             authenticate_user <username> <password>
    28           
    29     set_user_tags <username> <tag> ...
    30     list_users
    31 
    32     add_vhost <vhost>
    33     delete_vhost <vhost>
    34     list_vhosts [<vhostinfoitem> ...]
    35     set_permissions [-p <vhost>] <user> <conf> <write> <read>
    36     clear_permissions [-p <vhost>] <username>
    37     list_permissions [-p <vhost>]
    38     list_user_permissions <username>
    39 
    40     set_parameter [-p <vhost>] <component_name> <name> <value>
    41     clear_parameter [-p <vhost>] <component_name> <key>
    42     list_parameters [-p <vhost>]
    43 
    44     set_policy [-p <vhost>] [--priority <priority>] [--apply-to <apply-to>] 
    45 <name> <pattern>  <definition>
    46     clear_policy [-p <vhost>] <name>
    47     list_policies [-p <vhost>]
    48 
    49     list_queues [-p <vhost>] [<queueinfoitem> ...]
    50     list_exchanges [-p <vhost>] [<exchangeinfoitem> ...]
    51     list_bindings [-p <vhost>] [<bindinginfoitem> ...]
    52     list_connections [<connectioninfoitem> ...]
    53     list_channels [<channelinfoitem> ...]
    54     list_consumers [-p <vhost>]
    55     status
    56     node_health_check
    57     environment
    58     report
    59     eval <expr>
    60 
    61     close_connection <connectionpid> <explanation>
    62     trace_on [-p <vhost>]
    63     trace_off [-p <vhost>]
    64     set_vm_memory_high_watermark <fraction>
    65     set_vm_memory_high_watermark absolute <memory_limit>
    66     set_disk_free_limit <disk_limit>
    67     set_disk_free_limit mem_relative <fraction> 

    这篇文章也写的不错可以看下https://blog.csdn.net/super_rd/article/details/70327503

  • 相关阅读:
    C# 创建Excel并写入内容
    c#中使用excel
    C#中EXCEL表格的内容进度条实现
    WinForm c#操作Excel
    如何使用 Visual C# .NET 处理 Excel 事件
    C#与Excel的交互示例
    c#操作excel方式三:使用Microsoft.Office.Interop.Excel.dll读取Excel文件
    C#在excel中添加超链接
    ASP.NET学习笔记(3)
    ASP.NET学习笔记(4)
  • 原文地址:https://www.cnblogs.com/Alexephor/p/11565928.html
Copyright © 2011-2022 走看看