Linux安裝RabbitMQ3.73開啟插件shovel並做配置


一、安裝RabbitMQ

安裝rabbitmq所需的erlang軟件包,方法有二(編譯和yum安裝),這里采用yum安裝

vim /etc/yum.repos.d/rabbitmq-erlang.repo
#插入如下代碼
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1
#清除yum緩存並重新生成緩存
yum clean all && yum makecache

安裝erlang/socat

yum install erlang socat -y

安裝rabbitmq

rpm -Uvh https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.3/rabbitmq-server-3.7.3-1.el7.noarch.rpm
#啟動rabbitmq服務
systemctl start rabbitmq-server
#將rabbitmq設置為開機啟動
systemctl enable rabbitmq-server
#查看rabbitmq運行狀態
systemctl status rabbitmq-server

創建rabbitmq用戶

#添加用戶
rabbitmqctl add_user 用戶名 密碼
#設置用戶角色
rabbitmq set_user_tags admin administrator
#tag(administrator,monitoring,policymaker,management)
#設置用戶權限(接受來自所有Host的所有操作)
sudo rabbitmqctl  set_permissions -p "/" admin '.*' '.*' '.*' 
#查看用戶權限
sudo rabbitmqctl list_user_permissions admin

配置遠程訪問

#修改配置文件,
sudo vi /etc/rabbitmq/rabbitmq.config 

#保存以下內容
[
{rabbit, [{tcp_listeners, [5672]}, 
{loopback_users, ["admin"]}]} ].

模塊開放

#開放shovel模塊和shovel_management管理模塊
rabbitmq-plugins enable rabbitmq_shovel
rabbitmq-plugins enable rabbitmq_shovel_management

查看已開放的模塊

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

防火牆開放端口

firewall-cmd --zone=public --add-port=15672/tcp --permanent #permanent為永久生效
#重新加載防火牆
firewall-cmd --reload

附上rabbitmq常用命令

# 添加用戶
sudo rabbitmqctl add_user <username> <password>  
# 刪除用戶
sudo rabbitmqctl delete_user <username>  
# 修改用戶密碼
sudo rabbitmqctl change_password <username> <newpassword>  
# 清除用戶密碼(該用戶將不能使用密碼登陸,但是可以通過SASL登陸如果配置了SASL認證)
sudo rabbitmqctl clear_password <username> 
# 設置用戶tags(相當於角色,包含administrator,monitoring,policymaker,management)
sudo rabbitmqctl set_user_tags <username> <tag>
# 列出所有用戶
sudo rabbitmqctl list_users  
# 創建一個vhosts
sudo rabbitmqctl add_vhost <vhostpath>  
# 刪除一個vhosts
sudo rabbitmqctl delete_vhost <vhostpath>  
# 列出vhosts
sudo rabbitmqctl list_vhosts [<vhostinfoitem> ...]  
# 針對一個vhosts給用戶賦予相關權限;
sudo rabbitmqctl set_permissions [-p <vhostpath>] <user> <conf> <write> <read>  
# 清除一個用戶對vhosts的權限;
sudo rabbitmqctl clear_permissions [-p <vhostpath>] <username>  
# 列出哪些用戶可以訪問該vhosts;
sudo rabbitmqctl list_permissions [-p <vhostpath>]   
# 列出用戶訪問權限;
sudo rabbitmqctl list_user_permissions <username>

二、配置shovel模塊

登陸web界面配置shovel

開始配置

將對應的信息填好,這里注意,因為我們建vhost的時候一般喜歡帶個“/”,但是,在uri中直接填“/”他會當成路徑來處理,所以這個地方要用%2f來轉義。其它的就是將你源隊列及目錄隊列信息填好,然后添加即可。

amqp://username:passwd@IP:端口/%2fVhost

配置完成后在shovel status里面查看狀態,如果是runing表示配置成功。如果是terminated則表示配置有問題,請根據日志分析錯誤

URI參照一下示例

amqp://
connect to local server as default user

amqp://user@/my-vhost
connect to local server with alternate user and virtual host (passwords are not required for local connections)

amqp://server-name
connect to server-name, without SSL and default credentials

amqp://user:password@server-name/my-vhost
connect to server-name, with credentials and overridden virtual host

amqps://user:password@server-name?cacertfile=/path/to/cacert.pem&certfile=/path/to/cert.pem&keyfile=/path/to/key.pem&verify=verify_peer
connect to server-name, with credentials and SSL

amqps://server-name?cacertfile=/path/to/cacert.pem&certfile=/path/to/cert.pem&keyfile=/path/to/key.pem&verify=verify_peer&fail_if_no_peer_cert=true&auth_mechanism=external
connect to server-name, with SSL and EXTERNAL authentication

附:RabbitMQ遠程不能訪問問題的解決

修改rabbitmq.config.example,將以下兩項前面的%去掉,保存然后重啟服務即可。參考來源

{tcp_listeners, [5672]},
{loopback_users, ["admin"]},

 

本文參考博客1

本文參考博客2

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM