===============================================================================================
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. 【loj2461】【2018集训队互测Day 1】完美的队列

    #2461. 「2018 集训队互测 Day 1」完美的队列 传送门: https://loj.ac/problem/2461 题解: 直接做可能一次操作加入队列同时会弹出很多数字,无法维护:一个操作 ...

  2. POJ2234:Matches Game(Nim博弈)

    Matches Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12325   Accepted: 7184 题目链 ...

  3. springboot读取自己定义的配置文件的方式以及使用joda_time来处理时间日期

    总的来说呢,有两种方式,一种是原始的方式,即使用PropertiesUtils来读取配置文件. 第二种就是使用springboot的注解的方式来读取配置文件. 1.原始方式处理属性和时间日期: 工具类 ...

  4. C++引用C程序库函数

    C与C++混合编程 C++里面如何声明const void f(void)函数为C程序中的库函数. void f(void)用c++ compiler来编译,在产生的obj文件中的名字变成了 $f@@ ...

  5. git查看/修改 用户名和邮箱

    用户名和邮箱地址的作用 用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变. 每次commit都会用用户名和邮箱纪录. github的contributions统计就是按邮箱来统计的. ...

  6. #define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )

    原文 功能: 首先,sizeof(int)肯定是2的次方数,比如32位是4,64位是8 ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) ) 的意思就 ...

  7. ubuntu下MySQL的安装与卸载

    1. 删除mysql a. sudo apt-get autoremove --purge mysql-server-5.0 b. sudo apt-get remove mysql-server c ...

  8. libcurl移植到android

    一.总体概览 C库:libcurl 3.7 目标平台:android 编译平台:ubuntu 12 编译工具:ndk r7 or later 二.已知方法 1. 官网上给了两种方法,第一种方法是使用a ...

  9. sourceTree的下载与安装

    一. SourceTree是什么? 一个拥有可视化界面的项目版本控制的软件,适用于git项目管理,在window和mac均可使用. 二. SourceTree下载 下载地址:SourceTree官网 ...

  10. AngularJs编辑器

    问题:在使用过程中遇到的问题就是:angularJS绑定不上值.后来找到一种可以用的方式. html页 <div class="all"> <script typ ...