RabbitMQ消息队列———安装(一)
一、RabbitMQ队列
不同进程间的通信,简称IPC。不同的进程间的通信,可以基于队列解决,将生产者和消费者进行解耦,中间的队列作为其桥梁。RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。RabbitMQ可以,多个程序同时使用RabbitMQ ,但是必须队列名称不一样。采用erlang语言,属于爱立信公司开发的。
消息中间件 --->就是消息队列
异步方式:不需要立马得到结果,需要排队
同步方式:需要实时获得数据,坚决不能排队
subprocess 的Q也提供不同进程之间的沟通
应用场景:
电商秒杀活动
抢购小米手机
堡垒机批量发送文件
二、Centos6.x系统编译安装RabbitMQ
1、查看环境:
[root@rabbitmq ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)
[root@rabbitmq ~]# uname -r
2.6.-.el6.x86_64
2、安装erlang环境
、安装依赖包:
yum install gcc ncurses ncurses-base ncurses-devel ncurses-libs ncurses-static ncurses-term ocaml-curses -y
yum install ocaml-curses-devel openssl-devel zlib-devel openssl-devel perl xz xmlto m4 kernel-devel -y 、下载otp_src_19..tar.gz
wget http://erlang.org/download/otp_src_19.3.tar.gz 、tar xvf otp_src_19..tar.gz 、cd otp_src_19. 、./configure --prefix=/usr/local/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac 、make && make install 、配置erlang环境:
echo "export PATH=$PATH:/usr/local/erlang/bin" >>/etc/profile #使环境变量配置生效
source /etc/profile 、配置解析
[root@rabbitmq otp_src_19.]#
echo "127.0.0.1 自己的主机名" >>/etc/hosts #rabbitmq改成你自己主机名 备注:
启动rabbitmq报错:
[root@bogon sbin]# /usr/local/rabbitmq/sbin/rabbitmq-server -detache
ERROR: epmd error for host bogon: timeout (timed out) 原因:解析不了主机名 解决办法:先查看主机名
[root@rabbitmq ~]# hostname
rabbitmq 然后再执行下面这步 echo "127.0.0.1 主机的主机名" >>/etc/hosts
3、安装rabbitMQ
、下载rabbitmq-server-generic-unix-3.6..tar.xz
、tar xvf rabbitmq-server-generic-unix-3.6..tar.xz
、mv rabbitmq_server-3.6./ /usr/local/rabbitmq
、启动:
#启动rabbitmq服务
/usr/local/rabbitmq/sbin/rabbitmq-server
#后台启动
/usr/local/rabbitmq/sbin/rabbitmq-server -detached
#关闭rabbitmq服务
/usr/local/rabbitmq/sbin/rabbitmqctl stop
或
ps -ef | grep rabbit 和 kill - xxx #开启插件管理页面
/usr/local/rabbitmq/sbin/rabbitmq-plugins enable rabbitmq_management #创建用户
/usr/local/rabbitmq/sbin/rabbitmqctl add_user rabbitadmin
/usr/local/rabbitmq/sbin/rabbitmqctl set_user_tags rabbitadmin administrator #给用户授权
/usr/local/rabbitmq/sbin/rabbitmqctl set_permissions -p / rabbitadmin ".*" ".*" ".*" #语法: set_permissions [-p <vhost>] <user> <conf> <write> <read>
4、登录RabbitMQ_web页面

三、Centos7.x系统编译安装RabbitMQ
1、系统环境
[root@rabbitmq sbin]# cat /proc/version
Linux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Thu Nov 19 22:10:57 UTC 2015
1.1、Centos7.x关闭防火墙
1 [root@rabbitmq /]# systemctl stop firewalld.service
2
3 [root@rabbitmq /]# systemctl disable firewalld.service
4 Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
5 Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
如果不想关闭防火墙,可以通过如下方法处理:
1 开放5672端口:
2
3 firewall-cmd --zone=public --add-port=5672/tcp --permanent
4 firewall-cmd --reload
2、下载erlang和rabbitmq-server的rpm
http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm
http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
3、安装erlang
[root@rabbitmq ~]# cd /server/scripts/
[root@rabbitmq scripts]# ll
total 23508
-rw-r--r--. 1 root root 18580960 Jan 28 10:04 erlang-19.0.4-1.el7.centos.x86_64.rpm
-rw-r--r--. 1 root root 5487706 Jan 28 10:04 rabbitmq-server-3.6.6-1.el7.noarch.rpm
[root@rabbitmq scripts]# rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm
测试erlang是否安装成功:
[root@rabbitmq scripts]# erl
Erlang/OTP 19 [erts-8.0.3] [source] [64-bit] [smp:2:2] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V8.0.3 (abort with ^G)
1> 5+6.
11
2> halt(). #退出
4、安装socat (备注:安装RabbitMQ必须先安装socat依赖,否则会报错)
[root@rabbitmq scripts]# yum install socat
5、安装RabbitMQ
[root@rabbitmq scripts]# rpm -ivh rabbitmq-server-3.6.6-1.el7.noarch.rpm
启动和关闭:
/sbin/service rabbitmq-server start #启动服务
/sbin/service rabbitmq-server stop #关闭服务
/sbin/service rabbitmq-server status #查看服务状态
示例:
1 [root@rabbitmq ~]# service rabbitmq-server status
2 Redirecting to /bin/systemctl status rabbitmq-server.service
3 ● rabbitmq-server.service - RabbitMQ broker
4 Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
5 Active: active (running) since Sat 2017-01-28 20:20:46 CST; 8h ago
6 Main PID: 2892 (beam.smp)
7 Status: "Initialized"
8 CGroup: /system.slice/rabbitmq-server.service
9 ├─2892 /usr/lib64/erlang/erts-8.0.3/bin/beam.smp -W w -A 64 -P 1048576 -t 5000000 -st...
10 ├─3027 /usr/lib64/erlang/erts-8.0.3/bin/epmd -daemon
11 ├─3143 erl_child_setup 1024
12 ├─3153 inet_gethost 4
13 └─3154 inet_gethost 4
14
15 Jan 28 20:20:43 rabbitmq rabbitmq-server[2892]: RabbitMQ 3.6.6. Copyright (C) 2007-2016 Pivot...nc.
16 Jan 28 20:20:43 rabbitmq rabbitmq-server[2892]: ## ## Licensed under the MPL. See http...om/
17 Jan 28 20:20:43 rabbitmq rabbitmq-server[2892]: ## ##
18 Jan 28 20:20:43 rabbitmq rabbitmq-server[2892]: ########## Logs: /var/log/rabbitmq/rabbit@ra...log #日志存放地址
19 Jan 28 20:20:43 rabbitmq rabbitmq-server[2892]: ###### ## /var/log/rabbitmq/rabbit@ra...log
20 Jan 28 20:20:43 rabbitmq rabbitmq-server[2892]: ##########
21 Jan 28 20:20:43 rabbitmq rabbitmq-server[2892]: Starting broker...
22 Jan 28 20:20:45 rabbitmq rabbitmq-server[2892]: systemd unit for activation check: "rabbitmq-...ce"
23 Jan 28 20:20:46 rabbitmq systemd[1]: Started RabbitMQ broker.
24 Jan 28 20:20:46 rabbitmq rabbitmq-server[2892]: completed with 0 plugins.
25 Hint: Some lines were ellipsized, use -l to show in full.
#查看端口
1 [root@rabbitmq sbin]# ps -ef|grep rabbitmq
2 rabbitmq 2892 1 0 Jan28 ? 00:01:39 /usr/lib64/erlang/erts-8.0.3/bin/beam.smp -W w -A 64 -P 1048576 -t 5000000 -stbt db -zdbbl 32000 -K true -- -root /usr/lib64/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.6/ebin -noshell -noinput -s rabbit boot -sname rabbit@rabbitmq -boot start_sasl -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -rabbit error_logger {file,"/var/log/rabbitmq/rabbit@rabbitmq.log"} -rabbit sasl_error_logger {file,"/var/log/rabbitmq/rabbit@rabbitmq-sasl.log"} -rabbit enabled_plugins_file "/etc/rabbitmq/enabled_plugins" -rabbit plugins_dir "/usr/lib/rabbitmq/lib/rabbitmq_server-3.6.6/plugins" -rabbit plugins_expand_dir "/var/lib/rabbitmq/mnesia/rabbit@rabbitmq-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/var/lib/rabbitmq/mnesia/rabbit@rabbitmq" -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max 25672
3 rabbitmq 3027 1 0 Jan28 ? 00:00:00 /usr/lib64/erlang/erts-8.0.3/bin/epmd -daemon
4 rabbitmq 3143 2892 0 Jan28 ? 00:00:01 erl_child_setup 1024
5 rabbitmq 3153 3143 0 Jan28 ? 00:00:00 inet_gethost 4
6 rabbitmq 3154 3153 0 Jan28 ? 00:00:00 inet_gethost 4
7 root 24739 21359 0 03:18 pts/0 00:00:00 grep --color=auto rabbitmq
RabbitMQ消息队列———安装(一)的更多相关文章
- RabbitMQ 消息队列 安装及使用
RabbitMQ 消息队列安装: linux版本:CentOS 7 安装第一步:先关闭防火墙 1.Centos7.x关闭防火墙 [root@rabbitmq /]# systemctl stop fi ...
- (五)RabbitMQ消息队列-安装amqp扩展并订阅/发布Demo(PHP版)
原文:(五)RabbitMQ消息队列-安装amqp扩展并订阅/发布Demo(PHP版) 本文将介绍在PHP中如何使用RabbitMQ来实现消息的订阅和发布.我使用的系统依然是Centos7,为了方便, ...
- RabbitMQ消息队列安装和配置以及推送消息
好久没有写了,最近项目用到RabbitMQ,找了一些资料试验,最后终于成功了,把安装配置的步骤分享给大家. 一.Erlang安装具体过程: 1.双击otp_win32_R16801.exe(不同版本可 ...
- RabbitMQ消息队列+安装+工具介绍
1.MQ为Message Queue,消息队列是应用程序和应用程序之间的通信方法 2. 多种开发语言支持,其实就是一个驱动,如连接数据库的mysql驱动,oracle驱动等. 3. 4.采用以下语言开 ...
- RabbitMQ消息队列安装
[root@VM_119_179_centos ~]# rpm -ivh erlang-19.0.4-1.el6.x86_64.rpm [root@VM_119_179_centos ~]# rpm ...
- RabbitMQ消息队列系列教程(二)Windows下安装和部署RabbitMQ
摘要 本篇经验将和大家介绍Windows下安装和部署RabbitMQ消息队列服务器,希望对大家的工作和学习有所帮助! 目录 一.Erlang语言环境的搭建 二.RabbitMQ服务环境的搭建 三.Ra ...
- 第二百九十一节,RabbitMQ多设备消息队列-安装与简介
RabbitMQ多设备消息队列-安装与简介 RabbitMQ简介 解释RabbitMQ,就不得不提到AMQP(Advanced Message Queuing Protocol)协议. AMQP协议是 ...
- OpenStack 安装数据库和rabbitmq消息队列 (三)
一)安装配置数据库 1.1.安装包 # yum install mariadb mariadb-server python2-PyMySQL -y 1.2.配置数据库 # vim /etc/my.cn ...
- (三)RabbitMQ消息队列-Centos7下安装RabbitMQ3.6.1
原文:(三)RabbitMQ消息队列-Centos7下安装RabbitMQ3.6.1 如果你看过前两章对RabbitMQ已经有了一定了解,现在已经摩拳擦掌,来吧动手吧! 用什么系统 本文使用的是Cen ...
随机推荐
- MySQL之长连接、短连接、连接池
当数据库服务器和客户端位于不同的主机时,就需要建立网络连接来进行通信.客户端必须使用数据库连接来发送命令和接收应答.数据.通过提供给客户端数据库的驱动指定连接字符串后,客户端就可以和数据库建立连接了. ...
- 总结网站Mysql优化
Mysql存储引擎 选择合适的存储引擎Innodb myisam myisam: 写入数据非常快,适合使用场合dedecms/phpcms/discuz/微博系统等写入.读取操作多的系统. inno ...
- B-Tree和B+Tree
目前大部分数据库系统及文件系统都采用B-Tree或其变种B+Tree作为索引结构,在本文的下一节会结合存储器原理及计算机存取原理讨论为什么B-Tree和B+Tree在被如此广泛用于索引,这一节先单纯从 ...
- Python之路,Day9 - 线程、进程、协程和IO多路复用
参考博客: 线程.进程.协程: http://www.cnblogs.com/wupeiqi/articles/5040827.html http://www.cnblogs.com/alex3714 ...
- 【Python】什么是闭包
文章转载自:点这里 在 Python 中很多教材都没有提及什么是闭包,但在定义一个 Decorator 时,就已经用到闭包了.如果不理解什么是闭包,则不可能清晰掌握Decorator 装饰器. 要形成 ...
- Spring源码解析-IOC容器的实现
1.IOC容器是什么? IOC(Inversion of Control)控制反转:本来是由应用程序管理的对象之间的依赖关系,现在交给了容器管理,这就叫控制反转,即交给了IOC容器,Spring的IO ...
- 由浅入深了解EventBus:(五)
事件分发 EventBus3.0的事件的分发时通过EventBus类中的post(粘性事件为postSticky)方法,post与postSticky的唯一区别就是,在postSticky内部首先会向 ...
- List根据某个字段(属性)去重
有时候自带的list.Distinct()去重并不能满足魔门的要求,比如以下情况 如果testList的Name相同则视为重复,则可以如下实现,比写循环语句简洁多了 testList.Where((x ...
- 从userAgent判断浏览器是什么(chorme ie 火狐)浏览器类型检测、浏览器检测
一.正确的方法: 通过navigator对象的userAgent属性来判断, 主要是判断userAgent 的信息里是否含有以下字段信息: js代码(非完整版) /************ navig ...
- Spring简单与数据库连接
1.导入需要的jar包 2.配置数据源,在applicationContext.xml文件中增加配置 方式1:直接使用bean方式 1 2 3 4 5 6 <bean id="data ...