===============================================================================================
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. 【bzoj4372】烁烁的游戏

    Portal -->bzoj4372 Solution 感觉自己动态点分治好像没有学好qwq今天借这题来补个档qwq 其实所谓的动态点分治大概就是..和点分一样的套路,但是不同的是我们要更进一步 ...

  2. Spring MVC 使用Servlet原生API作为参数

    具体看代码: @RequestMapping("/testServletAPI") public void testServletAPI(HttpServletRequest re ...

  3. 1.5 Scipy:高级科学计算

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&am ...

  4. 让块元素在同一行显示的方法: float 和inline-block

    float: 定义:按照一个指定的方向移动,遇到父级的边界或者相邻的浮动元素就会停下来(不完全脱离文档流) 值: left.right.none 特点: 1.浮动的块元素可以在一行显示,宽度是被内容撑 ...

  5. JS中encodeURI、encodeURIComponent、decodeURI、decodeURIComponent

    js 对文字进行编码涉及2个函数:encodeURI,encodeURIComponent,相应2个解码函数:decodeURI,decodeURIComponent 1.用来编码和解码URI的 统一 ...

  6. UITableView .grouped 类型去除顶部间距

    在设置 UITableView 的 style 为 .grouped 类型的时候,发现第一个 cell 的顶部存在大段的间距,而改为 .plain 类型则没有这个间距,效果如下: 设置了 conten ...

  7. 1.redis设计与实现--简单动态字符串

    1.redis没有使用c语言的字符串表示,而是使用更加适合自己的SDS(simple dynamic string),简单动态字符串,结构如下: 2.sys与c字符串的对比: 3.总结: redis采 ...

  8. 51nod 1449 砝码称重 (进制思想)

    1449 砝码称重 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 现在有好多种砝码,他们的重量是 w0,w1,w ...

  9. CF839 C 树形DP 期望

    给一颗树,求从根出发路径长度的期望是多少. 树形DP 要想清楚期望的计算 /** @Date : 2017-08-12 23:09:41 * @FileName: C.cpp * @Platform: ...

  10. fastreport中文乱码问题

    fastreport的中文乱码问题,确实让人头疼,我使用的是delphi6+fastrepport4.7,在4.7版本中,主要表现在以下几种情况. 预览不乱码,保存乱码. 简体不乱码,繁体乱码. 简体 ...