===============================================================================================
1、安装Erlang

yum install ntp -y
ntpdate -u 202.112.10.36
yum install wget xmlto gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel wxBase wxGTK wxGTK-gl perl -y

cd /usr/local/software
tar zxvf otp_src_19.3.tar.gz
cd otp_src_19.3
./configure --prefix=/usr/local/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac
make && make install

然后在配置Erlang环境变量,vi /etc/profile文件,增加下面的环境变量:

#set erlang environment
export PATH=$PATH:/usr/local/erlang/bin

source /etc/profile使得文件生效

===============================================================================================
#解压rabbitmq,官方给的包是xz压缩包,所以需要使用xz命令
yum install xz -y
xz -d rabbitmq-server-generic-unix-3.7.2.tar.xz

#xz解压后得到.tar包,再用tar命令解压
tar -xvf rabbitmq-server-generic-unix-3.7.2.tar

#移动目录 看个人喜好
cp -rf ./rabbitmq_server-3.7.2 /usr/local/
cd /usr/local/

#修改文件夹名
mv rabbitmq_server-3.7.2 rabbitmq-3.7.2

#开启管理页面插件
cd ./rabbitmq-3.7.2/sbin/
./rabbitmq-plugins enable rabbitmq_management

#启动命令,该命令ctrl+c后会关闭服务
./rabbitmq-server

#在后台启动Rabbit
./rabbitmq-server -detached

缺点:这是用root用户启动的,是方便了,但可能不太安全

#关闭服务
./rabbitmqctl stop

#关闭服务(kill) 找到rabbitmq服务的pid [不推荐]
ps -ef|grep rabbitmq
kill -9 ****

#进入RabbitMQ安装目录
cd /usr/local/rabbitmq-3.7.2/sbin

#添加用户
#rabbitmqctl add_user Username Password
./rabbitmqctl add_user admin admin

#分配用户标签
#rabbitmqctl set_user_tags User Tag
#[administrator]:管理员标签
./rabbitmqctl set_user_tags admin administrator

./rabbitmqctl set_permissions -p '/' admin '.' '.' '.'

# 查看已安装的插件
./rabbitmq-plugins list
./rabbitmq-plugins enable rabbitmq_tracing
./rabbitmqctl trace_on

上面的软件包下载地址:链接:https://pan.baidu.com/s/1ragGo3q 密码:pyob

===========================================================================================
RabbitMQ内存控制 硬盘控制
https://www.cnblogs.com/haoliansheng/p/6094780.html 故障一例:
rabbitmq连接被阻塞,无法接收消息
今天监控服务器无法显示交易信息,经过查看rabbitmq的管理平台,发现一些connection处于blocked状态,队列无法接受消息 查看内存、CPU、磁盘后发现,内存、CPU指标正常,磁盘的剩余空间只剩下500M左右,检查磁盘发现另一个应用产生了大量的日志,导致磁盘空间日益减少,删除部分日志文件后,一切正常,为保证以后的正常运行,再添加一块磁盘。 RabbitMQ磁盘警报
https://www.cnblogs.com/xinxiucan/p/8041418.html
===========================================================================================
.NET 平台的网络断开异常处理办法
https://www.tuicool.com/articles/EJBrY3R
===========================================================================================

7,优化配置等

官网的配置

http://www.rabbitmq.com/production-checklist.html

http://www.rabbitmq.com/configure.html

http://www.rabbitmq.com/memory.html

http://www.rabbitmq.com/production-checklist.html#resource-limits-ram

线上优化后配置

[root@rabbitmq76 rabbitmq]# cat rabbitmq.conf

[

{rabbit,

[

{loopback_users, []},

{vm_memory_high_watermark, 0.40},              #最大使用内存40%,erlang开始GC

{vm_memory_high_watermark_paging_ratio, 0.8},  #32G内存,32*0.8*0.2时开始持久化磁盘

{disk_free_limit, "10GB"},                     #磁盘使用量剩余10G时,不收发消息

{hipe_compile, true},          #开启hipe,提高erlang性能

{collect_statistics_interval, 10000},          #统计刷新时间默认5秒,改成10秒

{cluster_partition_handling, autoheal}         #网络优化参数,不稳定时用这个选项

]

}

].

[root@rabbitmq76 rabbitmq]# cat rabbitmq-env.conf

RABBITMQ_NODENAME=rabbit@rabbitmq76 #节点名字,全局唯一

RABBITMQ_MNESIA_BASE=/data/rabbitmq/data         #消息落地存放位置

RABBITMQ_LOG_BASE=/data/rabbitmq/log             #日志位置

RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="+A 128"     #默认65,server线程

另外系统参数需要留有swap空间,及打开文件数rabbitmq启动进程至少需要5万,yum安装时rabbitmq启动,源码安装时root启动

[root@rabbitmq76 rabbitmq]# cat /etc/security/limits.conf

* soft   nofile 65536

* hard   nofile 131072

* soft   nproc 10240

* hard   nproc 20480

备注

内存控制:

vm_memory_high_watermark 该值为内存阈值,默认为0.4。意思为物理内存的40%。40%的内存并不是内存的最大的限制,它是一个发布的节制,当达到40%时Erlang会做GC。最坏的情况是使用

内存80%。如果把该值配置为0,将关闭所有的publishing 。

rabbitmqctl set_vm_memory_high_watermark 0

Paging 内存阈值,该值为默认为0.5,该值为vm_memory_high_watermark的20%时,将把内存数据写到磁盘。

如机器内存16G,当RABBITMQ占用内存1.28G(16*0.4*0.2)时把内存数据放到磁盘。

硬盘控制:

当RabbitMQ的磁盘空闲空间小于50M(默认),生产者将被BLOCK,

如果采用集群模式,磁盘节点空闲空间小于50M将导致其他节点的生产者都被block

可以通过disk_free_limit来对进行配置。

#服务器端配置详解

http://www.cnblogs.com/zhen-rh/p/6884297.html

.配置文件

一般情况下,RabbitMQ的默认配置就足够了。如果希望特殊设置的话,有两个途径: 
一个是环境变量的配置文件 rabbitmq-env.conf ; 
一个是配置信息的配置文件 rabbitmq.config; 
注意,这两个文件默认是没有的,如果需要必须自己创建。 
rabbitmq-env.conf 
这个文件的位置是确定和不能改变的,位于:/etc/rabbitmq目录下(这个目录需要自己创建)。 
文件的内容包括了RabbitMQ的一些环境变量,常用的有:

RABBITMQ_NODE_PORT= //端口号 
HOSTNAME= 
RABBITMQ_NODENAME=mq 
RABBITMQ_CONFIG_FILE= //配置文件的路径 
RABBITMQ_MNESIA_BASE=/rabbitmq/data //需要使用的MNESIA数据库的路径 
RABBITMQ_LOG_BASE=/rabbitmq/log //log的路径 
RABBITMQ_PLUGINS_DIR=/rabbitmq/plugins //插件的路径

具体的列表见:http://www.rabbitmq.com/configure.html#define-environment-variables

rabbitmq.config 
这是一个标准的erlang配置文件。它必须符合erlang配置文件的标准。 
它既有默认的目录,也可以在rabbitmq-env.conf文件中配置。

文件的内容详见:http://www.rabbitmq.com/configure.html#config-items

producer.py

# pip install pika

# https://www.cnblogs.com/kerwinC/p/5967584.html
import pika
credentials = pika.PlainCredentials('admin','admin')
connection = pika.BlockingConnection(pika.ConnectionParameters(
'192.168.1.250',5672,'/',credentials))
channel = connection.channel() # 声明queue
channel.queue_declare(queue='durable',durable=True)
channel.basic_publish(exchange='',
routing_key='durable',
body='Hello cheng!',
properties=pika.BasicProperties(
delivery_mode=2, # make message persistent
)
)
print(" [x] Sent 'Hello cheng!'")
connection.close()
consumer.py
import pika

credentials = pika.PlainCredentials('admin','admin')
connection = pika.BlockingConnection(pika.ConnectionParameters(
'192.168.1.250',5672,'/',credentials))
channel = connection.channel() # You may ask why we declare the queue again ‒ we have already declared it in our previous code.
# We could avoid that if we were sure that the queue already exists. For example if send.py program
# was run before. But we're not yet sure which program to run first. In such cases it's a good
# practice to repeat declaring the queue in both programs.
channel.queue_declare(queue='durable',durable=True) def callback(ch, method, properties, body):
print(" [x] Received %r" % body)
ch.basic_ack(delivery_tag=method.delivery_tag) channel.basic_consume(callback,
queue='durable',
#no_ack=True
) print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()

亲手安装RabbitMq 3.7.2 并安装Trace插件的更多相关文章

  1. windows下 安装 rabbitMQ 及操作常用命令

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rab ...

  2. 【先定一个小目标】windows下安装RabbitMQ消息服务器

    RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. 1:安装RabbitMQ 需要先安装Erlang语言开发包.下载地址  ...

  3. windows下 安装 rabbitMQ 及操作常用命令(操作创建用户密码 角色等)

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rab ...

  4. (转) windows下 安装 rabbitMQ 及操作常用命令

    该博客转载自:https://blog.csdn.net/gy__my/article/details/78295943 原作者:Eric Li  出处:http://www.cnblogs.com/ ...

  5. centos安装RabbitMQ 3.7.9 (使用RPM)

    上篇我们提到不使用RPM安装RabbitMQ 3.7.8,其实我个人更倾向不使用RPM安装RabbitMQ,因为可以控制安装位置及设置参数. 存在即合理,使用RPM安装RabbitMQ,可以减少配置参 ...

  6. Centos 7安装RabbitMQ 3.7.8版本(单机版)-不使用RPM

    RabbitMQ是目前非常热门的消息中间件,凭借其高可靠.高扩展.高可用及丰富的功能特性:TTL.死信队列.延迟队列.优先级队列.消息持久化.镜像队列. 消息中间件是指利用高效可靠的消息传递机制进行与 ...

  7. windows上安装RabbitMQ

    windows下 安装 rabbitMQ 及操作常用命令 rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.它遵循Mozilla Public License开源协议,采用 ...

  8. windows 和 Linux 安装rabbitmq

    windows 安装 rabbitmq 1,安装erlang 点击进入官网下载:http://erlang.org/download/ 2.安装rabbitmq 点击进入官网下载:http://www ...

  9. 安装 rabbitmq ,通过生成器获取redis列表数据 与 Celery 分布式异步队列

    一.安装rabbitmq  @全体成员 超简易安装rabbitmq文档 1.安装配置epel源rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/ ...

随机推荐

  1. 解题:BZOJ 4808 马

    题面 以前写过的题,翻出来学习网络流写二分图匹配,因为复杂度更优秀,$Dinic$是$O(sqrt(n)m)$哒~ 原点向左部点连流量为$1$的边,左部点向对应右部点连流量为$1$的边,右部点向汇点连 ...

  2. Python3 字典 clear()方法

     Python3 字典 描述 Python 字典 clear() 函数用于删除字典内所有元素. 语法 clear()方法语法: dict.clear() 参数 NA. 返回值 该函数没有任何返回值. ...

  3. Codeforces 833B The Bakery dp线段树

    B. The Bakery time limit per test 2.5 seconds memory limit per test 256 megabytes input standard inp ...

  4. linux shell学习三

    Shell for循环 Shell for循环的语法如下所示 for 变量 in 列表 do command1 command2 ... commandN done 举例: ..} do echo $ ...

  5. Bootstrap自学笔记

    <!DOCTYPE html><html lang="zh-cn"> <head> <meta charset="utf-8&q ...

  6. git安装和简单配置

    http://pan.baidu.com/share/link?shareid=4291215660&uk=219947478 直接贴网盘的地址了

  7. Spring整合JMS(二)——三种消息监听器(转)

    *注:别人那复制来的 1.3     消息监听器MessageListener 在Spring整合JMS的应用中我们在定义消息监听器的时候一共可以定义三种类型的消息监听器,分别是MessageList ...

  8. vee-validate

    http://vee-validate.logaretm.com/ 表单校验,配合VUE使用

  9. UVA-10779 Collectors Problem

    https://vjudge.net/problem/UVA-10779 题意:n个人,m种贴纸,每个人开始有一些贴纸 第一个人可以跟任何人交换任何贴纸 其余人只能用重复的贴纸 跟第一个人交换他们没有 ...

  10. Linux高级编程--01.vi命令

    VI是Linux/Unix下标配的一个纯字符界面的文本编辑器.由于不支持鼠标功能,也没有图形界面,相关的操作都要通过键盘指令来完成,需要记忆大量命令.因此很多人不大喜欢它,但同时由于键盘的方式往往比鼠 ...