CentOS 7 deploys RabbitMQ service

The full name of MQ is Message Queue, and Message Queue (MQ) is an application-to-application communication method. Applications communicate by reading and writing messages (application-specific data) to and from queues without requiring dedicated connections to link them. Messaging refers to programs communicating with each other by sending data in messages, rather than communicating with each other by making direct calls, which is often used for techniques such as remote procedure calls. Queuing refers to applications communicating through queues. The use of queues removes the requirement for the receiving and sending applications to execute concurrently. Among them, the more mature MQ products include IBM WEBSPHERE MQ and so on.

CentOS 7 deploys RabbitMQ service CentOS 7 deploys RabbitMQ service

Introduction to RabbitMQ

  • Install RabbitMQ's message broker software and implement AMQP (Advanced Message Queuing Protocol)
  • RabbitMQ tutorial: http://www.rabbitmq.com/getstarted.html
  • RabbitMQ installation: http://www.rabbitmq.com/download.html
  • RabbitMQ column: http://blog.csdn.net/column/details/rabbitmq.html

RabbitMQ installation

# Install from EPEL
[root@vdevops~]# yum --enablerepo=epel -y install rabbitmq-server
[root@vdevops~]# systemctl start rabbitmq-server
[root@vdevops /]# journalctl -xe
Nov 12 01:30:01 vdevops.org CROND[3856]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: DIAGNOSTICS
Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: ===========
Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: attempted to contact: [rabbit@vdevops]
Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: rabbit@vdevops:
Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: * unable to connect to epmd (port 4369) on vdevops: timeout (timed out)
Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: current node details:
Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: - node name: rabbitmqctl3831@vdevops
Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: - home dir: /var/lib/rabbitmq
Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: - cookie hash: s++dDMtIhAufFItw+ercBw==
Nov 12 01:30:04 vdevops.org polkitd[1007]: Unregistered Authentication Agent for unix-process:3798:36632 (system bus name :1.23, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected f
Nov 12 01:30:04 vdevops.org systemd[1]: rabbitmq-server.service: control process exited, code=exited status=2
Nov 12 01:30:04 vdevops.org systemd[1]: Failed to start RabbitMQ broker.
-- Subject: Unit rabbitmq-server.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit rabbitmq-server.service has failed.
--
-- The result is failed.
Nov 12 01:30:04 vdevops.org systemd[1]: Unit rabbitmq-server.service entered failed state.
Nov 12 01:30:04 vdevops.org systemd[1]: rabbitmq-server.service failed.
Nov 12 01:30:42 vdevops.org systemd[1]: Got automount request for /proc/sys/fs/binfmt_misc, triggered by 3860 (find)
Nov 12 01:30:42 vdevops.org systemd[1]: Mounting Arbitrary Executable File Formats File System...
-- Subject: Unit proc-sys-fs-binfmt_misc.mount has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit proc-sys-fs-binfmt_misc.mount has begun starting up.
Nov 12 01:30:42 vdevops.org systemd[1]: Mounted Arbitrary Executable File Formats File System.
-- Subject: Unit proc-sys-fs-binfmt_misc.mount has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit proc-sys-fs-binfmt_misc.mount has finished starting up.
--
-- The start-up result is done.

Rabbitmq-server startup error: Failed to start RabbitMQ broker

Du Niang's analysis: The host hostname configuration error, the original hostname is vdevops.org, changed to vdevops, modify the hostname setting in the hosts file

[root@vdevops /]# hostnamectl set-hostname vdevops # hostname change restart rabbitmq-server
[root@vdevops /]# systemctl status rabbitmq-server
● rabbitmq-server.service - RabbitMQ broker
   Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2016-11-12 01:32:41 CST; 3min 58s ago
  Process: 3831 ExecStop=/usr/lib/rabbitmq/bin/rabbitmqctl stop (code=exited, status=2)
 Main PID: 3891 (beam)
   CGroup: /system.slice/rabbitmq-server.service
           ├─3891 /usr/lib64/erlang/erlang-5.10.4/bin/beam -W w -K true -A30 -P 1048576 -- -root /usr/lib64/erlang -progname erl -- -home /var/; lib/rabbitmq -- -pa /usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/sbin/../ebin -nos...
           ├─3908 /usr/lib64/erlang/erts-5.10.4/bin/epmd -daemon
           ├─3963 inet_gethost 4
           └─3964 inet_gethost 4

Nov 12 01:32:39 vdevops systemd[1]: Starting RabbitMQ broker...
Nov 12 01:32:39 vdevops systemd[1]: rabbitmq-server.service: Got notification message from PID 3908, but reception only permitted for main PID 3891
Nov 12 01:32:40 vdevops rabbitmq-server[3891]: RabbitMQ 3.3.5. Copyright (C) 2007-2014 GoPivotal, Inc.
Nov 12 01:32:40 vdevops rabbitmq-server[3891]: ##  ##      Licensed under the MPL.  See http://www.rabbitmq.com/
Nov 12 01:32:40 vdevops rabbitmq-server[3891]: ##  ##
Nov 12 01:32:40 vdevops rabbitmq-server[3891]: ##########  Logs: /var/log/rabbitmq/[email protected]
Nov 12 01:32:40 vdevops rabbitmq-server[3891]: ######  ##        /var/log/rabbitmq/[email protected]
Nov 12 01:32:40 vdevops rabbitmq-server[3891]: ##########
Nov 12 01:32:41 vdevops systemd[1]: Started RabbitMQ broker.
Nov 12 01:32:41 vdevops rabbitmq-server[3891]: Starting broker... completed with 0 plugins.
[root@vdevops~]# systemctl enable rabbitmq-server
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.

firewall settings

[root@linuxprobe~]# firewall-cmd --add-port=5672/tcp --permanent
success
[root@linuxprobe~]# firewall-cmd --reload
success 

To use RabbitMQ, please add a user first

[root@vdevops ~]# rabbitmqctl add_user linuxprobe password
Creating user "linuxprobe" ...
...done.
[root@vdevops ~]# rabbitmqctl list_users
Listing users ...
guest   [administrator]
linuxprobe []
...done.
# granting admin role to a user is like follows
[root@vdevops ~]# rabbitmqctl change_password linuxprobe strongpassword
Changing password for user "linuxprobe" ...
...done.
# granting admin role to a user is like follows
[root@vdevops ~]# rabbitmqctl set_user_tags linuxprobe administrator
Setting tags for user "linuxprobe" to [administrator] ...
...done.
# deleting a user is like follows
[root@vdevops ~]# rabbitmqctl delete_user linuxprobe 
Deleting user "linuxprobe " ...
...done.

To use RabbitMQ, also add a virtual host

[root@vdevops ~]# rabbitmqctl add_vhost /my_vhost
Creating vhost "/my_vhost" ...
...done.
[root@vdevops ~]# rabbitmqctl list_vhosts 
Listing vhosts ...
/
/my_vhost
...done.
[root@vdevops ~]# rabbitmqctl delete_vhost /my_vhost
Deleting vhost "/my_vhost" ...
...done.

To grant permission to the user of the virtual host, please configure as follows

# rabbitmqctl set_permissions [-p vhost] [user] [permission ? (modify) (write) (read)]
[root@vdevops ~]# rabbitmqctl set_permissions -p /my_vhost linuxprobe ".*" ".*" ".*"
Setting permissions for user "linuxprobe" in vhost "/my_vhost" ...
...done.
# 
[root@vdevops ~]#  rabbitmqctl list_user_permissions linuxprobe
Listing permissions for user "linuxprobe" ...
/my_vhost   .*  .*  .*
...done.
# deleting permission of a specific user is like follows
[root@vdevops ~]# rabbitmqctl clear_permissions -p /my_vhost linuxprobe
Clearing permissions for user "linuxprobe" in vhost "/my_vhost" ...
...done.

RabbitMQ: Using the Web UI

[root@vdevops ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
  mochiweb
  webmachine
  rabbitmq_web_dispatch
  amqp_client
  rabbitmq_management_agent
  rabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
[root@vdevops ~]# systemctl restart rabbitmq-server

client access

http://vdevops:15672/
CentOS 7 deploys RabbitMQ service CentOS 7 deploys RabbitMQ service
CentOS 7 deploys RabbitMQ service CentOS 7 deploys RabbitMQ service

rabbitmqadmin use

You can configure RabbitMQ to use the rabbitmqadmin command

Download rabbitmqadmin on the web UI. Log in to the Web UI and move to "http://(hostname or IP address):15672/cli", then the following screen is displayed, you can download rabbitmqadmin here, right click here to save rabbitmqadmin.txt, and then upload it to the server Change to rabbitmqadmin, and add execute permission
CentOS 7 deploys RabbitMQ service CentOS 7 deploys RabbitMQ service

Upload rabbitmqadmin to the RabbitMQ server and set appropriate permissions, this example shows the following settings

[root@localhost ~]# ll /usr/local/bin/rabbitmqadmin 
-rwxr-xr-x. 1 root root 36112 Nov 11 17:23 /usr/local/bin/rabbitmqadmin
[root@vdevops bin]# rabbitmqadmin list users
+------------+------------------------------+---------------+
|    name    |        password_hash         |     tags      |
+------------+------------------------------+---------------+
| guest      | k2rhpzCrZBKkY5WRhUWrGm5DCkg= | administrator |
| linuxprobe | P+YxK1QXIYrJpek5i//rPjn5SME= | administrator |
+------------+------------------------------+---------------+
[root@vdevops bin]# cd
[root@vdevops ~]# rabbitmqadmin list users
+------------+------------------------------+---------------+
|    name    |        password_hash         |     tags      |
+------------+------------------------------+---------------+
| guest      | k2rhpzCrZBKkY5WRhUWrGm5DCkg= | administrator |
| linuxprobe | P+YxK1QXIYrJpek5i//rPjn5SME= | administrator |
+------------+------------------------------+---------------+
[root@vdevops ~]# rabbitmqadmin list vhosts
+-----------+---------+
|   name    | tracing |
+-----------+---------+
| /         | False   |
| /my_vhost | False |
+-----------+---------+

For more tutorials on rabbitmqadmin: Management Command Line Tool — RabbitMQ

[root@vdevops ~]# rabbitmqadmin declare user name=centos password=password tags=administrator 
user declared
[root@vdevops ~]# rabbitmqadmin declare permission vhost=/vhost01 user=centos configure=".*" write=".*" read=".*" 
*** vhost_or_user_not_found
[root@vdevops ~]# rabbitmqadmin declare vhost name=/vhost01 
vhost declared
[root@vdevops ~]# rabbitmqadmin declare permission vhost=/vhost01 user=centos configure=".*" write=".*" read=".*"
permission declared
[root@vdevops ~]# rabbitmqadmin -V /vhost01 -u centos -p password declare queue name=my_queue01 
queue declared
[root@vdevops ~]# rabbitmqadmin -V /vhost01 -u centos -p password publish routing_key=my_queue01 payload='Hello RabbitMQ World!' exchange=amq.default 
Message published
[root@vdevops ~]# rabbitmqadmin -V /vhost01 -u centos -p password get queue=my_queue01 requeue=false
+-------------+----------+---------------+-----------------------+---------------+------------------+------------+-------------+
<>| routing_key | exchange | message_count |        payload        | payload_bytes | payload_encoding | properties | redelivered |
+-------------+----------+---------------+-----------------------+---------------+------------------+------------+-------------+
| my_queue01  |          | 0             | Hello RabbitMQ World! | 21            | string           |            | False       |
+-------------+----------+---------------+-----------------------+---------------+------------------+------------+-------------+
[root@vdevops ~]# rabbitmqadmin -V /vhost01 -u centos -p password publish routing_key=my_queue01 payload='Hello LinuxProbe!' exchange=amq.default 
Message published
[root@vdevops ~]# rabbitmqadmin -V /vhost01 -u centos -p password get queue=my_queue01 requeue=false
+-------------+----------+---------------+-------------------+---------------+------------------+------------+-------------+
| routing_key | exchange | message_count |      payload      | payload_bytes | payload_encoding | properties | redelivered |
+-------------+----------+---------------+-------------------+---------------+------------------+------------+-------------+
| my_queue01  |          | 0             | Hello LinuxProbe! | 17            | string           |            | False       |
+-------------+----------+---------------+-------------------+---------------+------------------+------------+-------------+

Guess you like

Origin blog.csdn.net/yaxuan88521/article/details/132099389