rabbitmq3.6.15 安装


使用源码安装

1.下载 erlang 和 ncurses
wget https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.1.tar.gz
wget http://erlang.org/download/otp_src_20.3.tar.gz
#安装ncurses:
tar -zxvf ncurses-6.1.tar.gz
cd ncurses-6.1
./configure --with-shared  --prefix=/usr
make
make install

#安装erlang 
tar -xvf otp_src_20.3.tar.gz
cd /home/erlang/otp_src_20.3
./configure --prefix=/usr/local/erlang
make -j 4 
make install -j 4

#erlang加入PATH变量
vi /etc/profile
#set erlang environment
export PATH=$PATH:/usr/local/erlang/bin
#使配置生效
source /etc/profile

执行命令:erl



缺省安装路径: /usr/local/bin/erl

遇到的问题,需要升级openssl,同时编译的时候需要加上安装的openssl的目录

线上版本为:
# localhost:/home/software/otp_src_20.3 # openssl version
# OpenSSL 0.9.8j-fips 07 Jan 2009

# 升级openssl
# cd /usr/local/
# wget http://www.openssl.org/source/openssl-1.0.1s.tar.gz
# tar -zxvf openssl-1.0.1s.tar.gz
# cd openssl-1.0.1s
# ./config --prefix=/usr/local/openssl
# vim Makefile
--修改CFLAG= -DOPENSSL_THREADS 修改成 CFLAG= -fPIC -DOPENSSL_THREADS
--也就是添加 -fPIC
# make && make install

# 修改编译的语句为:
# ./configure --with-ssl=/usr/local/openssl --prefix=/usr/local/erlang --without-javac
2.安装rabbitmq
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-generic-unix-3.6.15.tar.xz
xz -d rabbitmq-server-generic-unix-3.6.15.tar.xz
tar -xvf rabbitmq-server-generic-unix-3.6.15.tar

#RabbitMQ加入PATH变量
vi /etc/profile
#set rabbitmq environment
export PATH=$PATH:/home/hcicloud/rabbitmq_server-3.6.15/sbin
#使配置生效
source /etc/profile

#服务启动关闭
启动:rabbitmq-server -detached
关闭:rabbitmqctl stop

以下是启动日志,可以看到默认的日志文件位置和配置文件位置
=INFO REPORT==== 21-Oct-2019::10:50:05 ===
node           : rabbit@localhost
home dir       : /root
config file(s) : /usr/local/rabbitmq/etc/rabbitmq/rabbitmq.config (not found)
cookie hash    : dozkWKJtxOBHay1RgIwfGA==
log            : /usr/local/rabbitmq/var/log/rabbitmq/[email protected]
sasl log       : /usr/local/rabbitmq/var/log/rabbitmq/[email protected]
database dir   : /usr/local/rabbitmq/var/lib/rabbitmq/mnesia/rabbit@localhost




#启动命令(以下内容参考朱小厮的rabbitmq)
#服务启动关闭
启动(rabbitmq分别启动节点和应用):rabbitmq-server -detached
关闭(应用和节点都将被关闭):rabbitmqctl stop

#集群配置相关命令
#应用启动
rabbitmqctl start_app
#应用关闭
rabbitmqctl stop_app
rabbitmqctl reset
#在当前集群中加入某节点:rabbitmqctl join_cluster {rabbit_node_name} (某些低版本可以采用rabbitmqctl cluster {rabbit_node_name})
集群状态:rabbitmqctl cluster_status
将某节点剔除出当前集群:rabbitmqctl forget_cluster_node {rabbit_node_name}

3.启动web管理插件
rabbitmq-plugins enable rabbitmq_management
错误一:User can only in via localhsot.
解决方式:
将:{loopback_users, [<<”guest”>>]},
改为:{loopback_users, []}


4.集群搭建

1 读取其中一个节点的cookie, 并复制到其他节点(节点之间通过cookie确定相互是否可通信)。
cookie存放在/var/lib/rabbitmq/.erlang.cookie或者$HOME/.erlang.cookie中

2 配置各节点的hosts文件( vim /etc/hosts)
xxx.xxx.xxx.xxx hidden1
xxx.xxx.xxx.xxx hidden2
xxx.xxx.xxx.xxx hidden3

3 以hidden1为主节点,在hidden2上:

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@hidden1
rabbitmqctl start_app

hidden3上的操作与hidden2的雷同。
最后通过rabbitmqctl cluster_status查看集群的状态信息:

linux:~ # rabbitmqctl cluster_status
Cluster status of node rabbit@linux
[{nodes,[{disc,[rabbit@PACTI,rabbit@linux,rabbit@localhost]}]},
 {running_nodes,[rabbit@PACTI,rabbit@localhost,rabbit@linux]},
 {cluster_name,<<"rabbit@linux">>},
 {partitions,[]},
 {alarms,[{rabbit@PACTI,[]},{rabbit@localhost,[nodedown]},{rabbit@linux,[]}]}]

这里有一个节点是:nodedown,因为修改host后,没有重启导致的,先不管。

5.镜像队列设置
# 对队列名称以text_analysis开头的所有队列和 exchange 进行镜像,并在集群中全部节点完成
rabbitmqctl set_policy text_analysis “^text_analysis” '{"ha-mode":"all"}'

命令说明
镜像队列的配置通过添加policy完成,policy添加的命令为:
rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]
-p Vhost: 可选参数,针对指定vhost下的queue进行设置
Name: policy的名称
Pattern: queue的匹配模式(正则表达式)
Definition: 镜像定义,包括三个部分 ha-mode,ha-params,ha-sync-mode
ha-mode: 指明镜像队列的模式,有效值为 all/exactly/nodes
all表示在集群所有的节点上进行镜像
exactly表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
nodes表示在指定的节点上进行镜像,节点名称通过ha-params指定
ha-params: ha-mode模式需要用到的参数
ha-sync-mode: 镜像队列中消息的同步方式,有效值为automatic,manually
Priority: 可选参数, policy的优先级
————————————————
版权声明:本文为部分内容参考「朱小厮」的原创文章
RabbitMQ常用命令

6.延迟队列

(1)下载延迟插件
https://www.rabbitmq.com/community-plugins.html
注意:支持RabbitMQ 3.5.8及更高版本

(2)将解压后的ez结尾的文件放到/rabbitmq/plugins/目录下
(3)输入rabbitmq-plugins list查看延迟插件是否存在

[root@hcicloud plugins]# rabbitmq-plugins list
Listing plugins with pattern ".*" ...
 Configured: E = explicitly enabled; e = implicitly enabled
 | Status: * = running on rabbit@hcicloud
 |/
[  ] rabbitmq_amqp1_0                  3.7.17
[  ] rabbitmq_auth_backend_cache       3.7.17
[  ] rabbitmq_auth_backend_http        3.7.17
[  ] rabbitmq_auth_backend_ldap        3.7.17
[  ] rabbitmq_auth_mechanism_ssl       3.7.17
[  ] rabbitmq_consistent_hash_exchange 3.7.17
[E*] rabbitmq_delayed_message_exchange 20171201-3.7.x
[  ] rabbitmq_event_exchange           3.7.17
[  ] rabbitmq_federation               3.7.17
[  ] rabbitmq_federation_management    3.7.17
[  ] rabbitmq_jms_topic_exchange       3.7.17
[E*] rabbitmq_management               3.7.17
[e*] rabbitmq_management_agent         3.7.17
[  ] rabbitmq_mqtt                     3.7.17
[  ] rabbitmq_peer_discovery_aws       3.7.17
[  ] rabbitmq_peer_discovery_common    3.7.17
[  ] rabbitmq_peer_discovery_consul    3.7.17
[  ] rabbitmq_peer_discovery_etcd      3.7.17
[  ] rabbitmq_peer_discovery_k8s       3.7.17
[  ] rabbitmq_random_exchange          3.7.17
[  ] rabbitmq_recent_history_exchange  3.7.17
[  ] rabbitmq_sharding                 3.7.17
[  ] rabbitmq_shovel                   3.7.17
[  ] rabbitmq_shovel_management        3.7.17
[  ] rabbitmq_stomp                    3.7.17
[  ] rabbitmq_top                      3.7.17
[  ] rabbitmq_tracing                  3.7.17
[  ] rabbitmq_trust_store              3.7.17
[e*] rabbitmq_web_dispatch             3.7.17
[  ] rabbitmq_web_mqtt                 3.7.17
[  ] rabbitmq_web_mqtt_examples        3.7.17
[  ] rabbitmq_web_stomp                3.7.17
[  ] rabbitmq_web_stomp_examples       3.7.17

(4)启用延迟插件

# 启动
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
# 关闭
rabbitmq-plugins enable rabbitmq_delayed_message_exchange

访问可视化界面,有如下则说明启动成功


新建exchange.png

查看新建的exchange,同时绑定队列到exchange


image.png
image.png

(5)生产者发送消息到延迟,test_delayed_exchange队列上在30秒后看到发送的数据
部分代码示例:

    /**
     * 携带头部信息的发送到队列中
     * @param message
     * @throws Exception
     */
    public void send3(Object message) throws Exception {
        String str = message.toString();
        org.springframework.amqp.core.Message message1 = org.springframework.amqp.core.MessageBuilder.withBody(str.getBytes())
                .setContentType(MessageProperties.CONTENT_TYPE_TEXT_PLAIN)
                .setContentEncoding("utf-8")
                .setMessageId(UUID.randomUUID()+"")
                .setHeader("x-delay", 1000 * 30)
                .build();
        //id + 时间戳 全局唯一
        CorrelationData correlationData = new CorrelationData("1234567890");
        rabbitTemplate.convertAndSend("test_delayed_exchange", "test_delayed", message1, correlationData);
    }

7.安装包下载地址:
链接:https://pan.baidu.com/s/1eD6sZNcI_dlUHgbHgwa0bQ 密码:e2jd

你可能感兴趣的:(rabbitmq3.6.15 安装)