简介

本文介绍RabbitMQ的安装及配置方法及其常用操作。

下载与安装

下载地址

Erlang:    ​​Erlang Programming Language​

RabbitMQ:    ​​Downloading and Installing RabbitMQ — RabbitMQ​​ 

注意版本对应关系:​​RabbitMQ Erlang Version Requirements — RabbitMQ​

RabbitMQ--安装/配置/使用_rabbitmq

Linux安装

见《RabbitMQ实战指南》=> 1.4 RabbitMQ的安装及简单使用

Windows安装

其他网址

Windows下RabbitMQ安装及配置_zhm3023的专栏

一、下载安装Erlang

1.下载

下载地址:​​https://www.erlang.org/downloads​​​,本文选择​​OTP 21.0.1 Windows 64-bit Binary File ​​(91707927)

2.安装

新建环境变量(系统变量):变量名:ERLANG_HOME;变量值:解压的路径

修改环境变量path:增加"%ERLANG_HOME%\bin";

//不能这样:在环境变量path增加:Erlang解压的路径\bin。原因:rabbitmq依赖ERLANG_HOME变量来运行

二、下载安装RabbitMQ

1.下载

下载地址:​​Downloading and Installing RabbitMQ — RabbitMQ​

exe安装地址:​​Installing on Windows — RabbitMQ​

解压缩安装地址:​​Installing on Windows Manually — RabbitMQ​

本文选择解压缩安装rabbitmq-server-windows-3.7.7.zip(与exe安装差别不大)

2.安装

2.1修改环境变量

将rabbitmq-server-windows-3.7.7.zip解压缩至D:\Program Files目录下

新建环境变量(系统变量):变量名:RABBITMQ_SERVER;变量值:解压的路径

修改环境变量path:增加"%RABBITMQ_SERVER%\sbin";

//或者直接在环境变量path增加:RabbitMQ解压的路径\sbin

2.2安装管理插件

rabbitmq_managemen是管理后台的插件、我们要开启这个插件才能通过浏览器访问登录页面。

执行命令:rabbitmq-plugins.bat enable rabbitmq_management

可能报错:

RabbitMQ--安装/配置/使用_python_02

解决方法:

C:\Users\Administrator\.erlang.cookie 拷贝至 C:\Windows\System32\config\systemprofile\.erlang.cookie

删除:C:\Users\Administrator\AppData\Roaming\RabbitMQ目录

再次执行命令:rabbitmq-plugins.bat enable rabbitmq_management

执行成功:

RabbitMQ--安装/配置/使用_erlang_03

2.3测试

启动服务:rabbitmq-server.bat

查看状态:rabbitmqctl status

登录网址查看:​​http://localhost:15672​​     (账号:guest;密码:guest)

使用综述

其他网址

官方教程:​​Getting started with RabbitMQ — RabbitMQ​

【RabbitMQ】基本概念及安装_大数据_wudiyong22的专栏

管理MQ(WEB页面)

新增用户

RabbitMQ--安装/配置/使用_erlang_04

给新增的用户授权

其他网址

(RabbitMq 本地连接报错 org.springframework.amqp.AmqpIOException: java.io.IOException_Java_

启动报错

org.springframework.amqp.AmqpIOException: java.io.IOException….

问题原因

RabbitMQ--安装/配置/使用_python_05

 ​解决方法​(给rabbitmq新增的用户授权)

1.打开RabbitMq web管理界面,进入该页面,点击用户名称

RabbitMQ--安装/配置/使用_erlang_06

2.点击 set premission 按钮,就ok了

RabbitMQ--安装/配置/使用_erlang_07

再去本地启动一下项目,使用这个用户。发现不报错了。

删除队列

        开发的过程中,有些事件会因为代码的不完善消费失败,然后就会一直消费,然后一直报错。当bug修复,把正确的代码上传到开发环境,原先遗留的问题消息任然存在,并且会阻塞队列,让之后的正常的消息无法让系统正常的消费。

法1:通过网页删除(消息多时会报错)

访问网址:​​http://localhost:15672​

找到指定队列

RabbitMQ--安装/配置/使用_erlang_08

在下方的 Delete / Purge 中点击 Delete 或者是 Purge 都可以达到效果(delete:删除消息与队列;purge:只删消息)

RabbitMQ--安装/配置/使用_erlang_09

缺点:消息多的时候点击,页面会卡死。即使没有卡死也会出现如下对话框:

RabbitMQ--安装/配置/使用_使用_10

网上也没有搜索到什么有用的答案。只找到一句话,

如果队列的主节点不可用,则非镜像队列的行为取决于其持久性。在节点恢复正常之前,持久化队列将不可用。在集群中其他节点上对主节点不可用的持久化队列进行任何操作都将失败

法2:重置RabbitMQ

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

执行了一次之后确实是有效的。重启的RabbitMq,然后里面的消息也确实清空了。

缺点:不仅会清空消息,还会清空所有配置信息。

法3:命令删除指定的队列

下边三个都可以

rabbitmqctl purge_queue ${queue_name} 

rabbitmqctl purge_queue ${queue_name}

rabbitmqctl -p ${vhostpath} purge_queue ${queue_name} 

也可以使用rabbitmqadmin

rabbitmqadmin delete queue name='queuename'

rabbitmqctl

其他网址

记一次删除 RabbitMQ 消息的经历 - 个人文章 -

rabbitmqctl --help

Error:

[Usage]

rabbitmqctl [--node <node>] [--timeout <timeout>] [--longnames] [--quiet] <command> [<command options>]

Available commands:

[Help]

help Displays usage information for a command
version Displays CLI tools version

[Nodes]

await_startup Waits for the RabbitMQ application to start on the target node
reset Instructs a RabbitMQ node to leave the cluster and return to its virgin state
rotate_logs Instructs the RabbitMQ node to perform internal log rotation
shutdown Stops RabbitMQ and its runtime (Erlang VM). Monitors progress for local nodes. Does not require a PID file path.
start_app Starts the RabbitMQ application but leaves the runtime (Erlang VM) running
stop Stops RabbitMQ and its runtime (Erlang VM). Requires a local node pid file path to monitor progress.
stop_app Stops the RabbitMQ application, leaving the runtime (Erlang VM) running
wait Waits for RabbitMQ node startup by monitoring a local PID file. See also 'rabbitmqctl await_online_nodes'

[Cluster]

await_online_nodes Waits for <count> nodes to join the cluster
change_cluster_node_type Changes the type of the cluster node
cluster_status Displays all the nodes in the cluster grouped by node type, together with the currently running nodes
force_boot Forces node to start even if it cannot contact or rejoin any of its previously known peers
force_reset Forcefully returns a RabbitMQ node to its virgin state
forget_cluster_node Removes a node from the cluster
join_cluster Instructs the node to become a member of the cluster that the specified node is in
rename_cluster_node Renames cluster nodes in the local database
update_cluster_nodes Instructs a cluster member node to sync the list of known cluster members from <seed_node>

[Replication]

cancel_sync_queue Instructs a synchronising mirrored queue to stop synchronising itself
sync_queue Instructs a mirrored queue with unsynchronised mirrors (follower replicas) to synchronise them

[Users]

add_user Creates a new user in the internal database
authenticate_user Attempts to authenticate a user. Exits with a non-zero code if authentication fails.
change_password Changes the user password
clear_password Clears (resets) password and disables password login for a user
delete_user Removes a user from the internal database. Has no effect on users provided by external backends such as LDAP
list_users List user names and tags
set_user_tags Sets user tags

[Access Control]

clear_permissions Revokes user permissions for a vhost
clear_topic_permissions Clears user topic permissions for a vhost or exchange
list_permissions Lists user permissions in a virtual host
list_topic_permissions Lists topic permissions in a virtual host
list_user_permissions Lists permissions of a user across all virtual hosts
list_user_topic_permissions Lists user topic permissions
list_vhosts Lists virtual hosts
set_permissions Sets user permissions for a vhost
set_topic_permissions Sets user topic permissions for an exchange

[Monitoring, observability and health checks]

environment Displays the name and value of each variable in the application environment for each running application
list_bindings Lists all bindings on a vhost
list_channels Lists all channels in the node
list_ciphers Lists cipher suites supported by encoding commands
list_connections Lists AMQP 0.9.1 connections for the node
list_consumers Lists all consumers for a vhost
list_exchanges Lists exchanges
list_hashes Lists hash functions supported by encoding commands
list_queues Lists queues and their properties
list_unresponsive_queues Tests queues to respond within timeout. Lists those which did not respond
node_health_check Performs several opinionated health checks of the target node
ping Checks that the node OS process is up, registered with EPMD and CLI tools can authenticate with it
report Generate a server status report containing a concatenation of all server status information for support purposes
schema_info Lists schema database tables and their properties
status Displays status of a node

[Parameters]

clear_global_parameter Clears a global runtime parameter
clear_parameter Clears a runtime parameter.
list_global_parameters Lists global runtime parameters
list_parameters Lists runtime parameters for a virtual host
set_global_parameter Sets a runtime parameter.
set_parameter Sets a runtime parameter.

[Policies]

clear_operator_policy Clears an operator policy
clear_policy Clears (removes) a policy
list_operator_policies Lists operator policy overrides for a virtual host
list_policies Lists all policies in a virtual host
set_operator_policy Sets an operator policy that overrides a subset of arguments in user policies
set_policy Sets or updates a policy

[Virtual hosts]

add_vhost Creates a virtual host
clear_vhost_limits Clears virtual host limits
delete_vhost Deletes a virtual host
list_vhost_limits Displays configured virtual host limits
restart_vhost Restarts a failed vhost data stores and queues
set_vhost_limits Sets virtual host limits
trace_off
trace_on

[Node configuration]

decode Decrypts an encrypted configuration value
encode Encrypts a sensitive configuration value
set_cluster_name Sets the cluster name
set_disk_free_limit Sets the disk_free_limit setting
set_log_level Sets log level in the running node
set_vm_memory_high_watermark Sets the vm_memory_high_watermark setting

[Definitions]

export_definitions Exports definitions in JSON or compressed Erlang Term Format.
import_definitions Imports definitions in JSON or compressed Erlang Term Format.

[Feature flags]

enable_feature_flag Enables a feature flag on target node
list_feature_flags Lists feature flags

[Operations]

close_all_connections Instructs the broker to close all connections for the specified vhost or entire RabbitMQ node
close_connection Instructs the broker to close the connection associated with the Erlang process id
eval Evaluates a snippet of Erlang code on the target node
exec Evaluates a snippet of Elixir code on the CLI node
force_gc Makes all Erlang processes on the target node perform/schedule a full sweep garbage collection
hipe_compile Only exists for backwards compatibility. HiPE support has been dropped starting with Erlang 22. Do not use

[Queues]

delete_queue Deletes a queue
purge_queue Purges a queue (removes all messages in it)

Use 'rabbitmqctl help <command>' to learn more about a specific command

rabbitmqadmin

其他网址

rabbitmqadmin安装与使用 - aaron_agu

​如何让RabbitMQ管理命令行工具在Windows上运行 - Thinbug​

RabbitMQ windows 管理工具_DqWong的专栏_rabbitmq客户端工具

简介

在windows下使用rabbitmqadmin 比较麻烦,需要用python运行,例如:python rabbitmqadmin list users。

rabbitmqadmin使用方法

以下步骤的前提是管理插件management pluin已安装好

1. 在浏览器中输入 (“server-name”为你rabbitmq的hostname)

http://server-name:15672/cli/    //本机使用默认的localhost,在浏览器中输入http://localhost:15672/cli/

2. 按照页面提示,右键保存下载链接,浏览器会下载rabbitmqadmin文件,并且自动加上后缀名txt,这个rabbitmqadmin.txt其实是一个python内容的文件,所以需要用python解析,确保你电脑有​python2.x,不支持3.x​。

3. 将rabbitmqadmin.txt放到和python.exe同个路径,并把后缀txt去掉,然后通过下面的方式去调用rabbitmqadmin

python.exe rabbitmqadmin

4. 使用下面的命令可以查看使用说明

python.exe rabbitmqadmin --help

基本功能和网页版插件一样,包括:

- 查看exchanges, queues, bindings, vhosts, users, permissions, connections和channels.

- overview信息查看

- 声明,删除exchanges, queues, bindings, vhosts, users 和 permissions

- 发布或获取消息

- 关闭连接,释放队列

- 导入导出配置

5. rabbitmqadmin支持bash shell用tab键自动补齐,查看bash自动补齐脚本可以调用一下命令

python.exe rabbitmqadmin --bash-completion

命令

命令

解释

rabbitmqadmin list users

查看所有用户 User

rabbitmqadmin list users name

查看所有用户名 Username

rabbitmqadmin list users tags

查看所有用户角色

rabbitmqadmin list vhosts

查看所有虚拟主机

rabbitmqadmin list connections

查看所有连接

rabbitmqadmin list exchanges

查看所有路由 Exchange

rabbitmqadmin list bindings

查看所有路由与队列的关系绑定 Binding

rabbitmqadmin list permissions

查看所有角色的权限 Permission

rabbitmqadmin list channels

查看所有通道 Channel

rabbitmqadmin list consumers

查看所有消费者 Consumer

rabbitmqadmin list queues

查看所有消息队列 Queue

rabbitmqadmin list nodes

查看所有节点 Node

rabbitmqadmin show overview

概览 Overview

rabbitmqadmin list bindings source destination_type destination properties_key

查看所有路由与队列的关系绑定的详细信息 Binding

rabbitmqadmin declare queue name=test durable=true

定义一个队列queue,durable=true代表持久化打开。

rabbitmqadmin declare exchange name=my.fanout type=fanout

定义一个Fanout路由

rabbitmqadmin declare exchange name=my.direct type=direct

定义一个Direct路由

rabbitmqadmin declare exchange name=my.topic type=topic

定义一个Topic路由

rabbitmqadmin declare binding source=my.fanout destination=test routing_key=first

定义 binding

rabbitmqadmin publish routing_key=test payload="hello world"

发布一条消息

rabbitmqadmin publish routing_key=my.test exchange=my.topic payload="hello world"

使用路由转发消息

rabbitmqadmin get queue=test requeue=true

查看消息,不消费

rabbitmqadmin get queue=test requeue=false

查看消息,并消费

rabbitmqadmin purge queue name=test

删除队列中的所有消息

rabbitmqadmin delete queue name=hello

删除消息队列 Queue

rabbitmqadmin delete user name=test

删除用户 User

rabbitmqadmin delete exchange name=test

删除路由器 Exchange

rabbitmqadmin delete binding source='kk' destination_type=queue destination=test properties_key=test

删除路由器与消息队列的关系绑定 Binding

rabbitmqadmin -f raw_json list users

raw_json 格式化输出

rabbitmqadmin -f long list users

格式化输出

rabbitmqadmin -f pretty_json list users

pretty_json 格式化输出

rabbitmqadmin -f kvp list users

格式化输出

rabbitmqadmin -f tsv list users

格式化输出

rabbitmqadmin -f table list users

table 格式化输出

rabbitmqadmin -f bash list users

bash 格式化输出