rabbitMQ

Posted 丶落幕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rabbitMQ相关的知识,希望对你有一定的参考价值。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

准本环境

1.下载rabbitMQ和erlang

这里使用的centos7
rabbitMQ官网

2.安装rabbitMQ和erlang

代码如下(示例):

#解压erlang
rpm -Uvh erlang-22.3-1.el7.x86_64.rpm
#安装erlang
yum install erlang
#查看erlang版本
erl -v
#安装rabbitMQ所需插件
yum install -y socat
#解压rabbitMQ
rpm -Uvh rabbitmq-server-3.8.14-1.el7.noarch.rpm
#安装rabbitMQ
yum install rabbitmq -y
#启动rabbitMQ
systemctl start rabbitmq-server
#设置开启启动
systemctl enable rabbitmq-server

当看到 active (running) 代表环境配置成功(示例):

#查看rabbitMQ状态
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 三 2021-04-21 14:23:32 EDT; 1min 4s ago
 Main PID: 119392 (beam.smp)
   Status: "Initialized"
   Memory: 69.0M
   CGroup: /system.slice/rabbitmq-server.service
           ├─119392 /usr/lib64/erlang/erts-10.7/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 51...
           ├─119407 erl_child_setup 32768
           ├─119431 /usr/lib64/erlang/erts-10.7/bin/epmd -daemon
           ├─119453 inet_gethost 4
           └─119454 inet_gethost 4

安装web客户端

#默认情况下rabbitMQ是没有安装web客户端的插件的,需要安装才可以生效
rabbitmq-plugins enable rabbitmq_management
#添加用户
rabbitmqctl add_user admin admin
#授予权限
rabbitmqctl set_user_tags admin administrator

guest只能在localhost访问,这里是外网访问不能用,所以要添加用户,web端口在15672

权限说明:
(1) 超级管理员(administrator)
可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。
(2) 监控者(monitoring)
可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
(3) 策略制定者(policymaker)
可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。
(4) 普通管理者(management)
仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。
(5) 其他(none)
无法登陆管理控制台,通常就是普通的生产者和消费者。

3.docker安装rabbitMQ

这里报了个错:

docker: Error response from daemon: Get https://registry-1.docker.io/v2/: x509: certificate has expired or is not yet valid.
通过百度发现应该是本地时间问题,因为是虚拟机不用经常挂起
#安装工具
yum install ntpdate
同步时间
ntpdate cn.pool.ntp.org
问题解决

#这里通过-e设置了用户,并且安装rabbitmq的同时也安装了management
docker run -di --name myrabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management

总结

fanout:扇出(发布订阅)
direct:精确匹配
topic:模糊匹配( * 代表有且只有一级, # 代表0级或者多级)
headers:参数匹配
work:轮询分发使用自动应答(均分) 公平分发采用手动应答(能者多劳)

channel.basicQos(1);//指标(消费多少条)
channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);//手动应答

消息往交换机投递,如果没有指定交换机,则使用默认交换机(direct模式)
消费一个不存在的队列会报错

以上是关于rabbitMQ的主要内容,如果未能解决你的问题,请参考以下文章

带着新人学springboot的应用07(springboot+RabbitMQ 下)

RabbitMQ入门:Hello RabbitMQ 代码实例

rabbitmq演示代码

SpringBoot RabbitMQ 延迟队列代码实现

RabbitMQ代码第一步

RabbitMQ代码第一步