Docker安裝rabbitMq

本地测试时使用docker安装mq非常方便

本地Docker安裝rabbitMq 参考链接:https://www.jianshu.com/p/ebdc106cfd00

docker run --name rabbitmq -d -p 15672:15672 -p 5672:5672 rabbitmq:management
docker run -d -p 15672:15672 -p 5672:5672 --hostname my-rabbit --name test-rabbit rabbitmq:3

停止 RabbitMQ 容器

docker stop rabbitmq

启动 RabbitMQ 容器

docker start rabbitmq

重启 RabbitMQ 容器

docker restart rabbitmq

查看 RabbitMQ 容器进程信息

docker top rabbitmq

控制台信息

启动容器后,可以浏览器中访问http://localhost:15672来查看控制台信息。
RabbitMQ默认的用户名:guest,密码:guest

composer install

thinkphp 创建消费者

\console\command\OrderCreateConsumer 为生成路径,win下用 \ linux 用 / , 我是win环境

php think make:command app\console\command\OrderCreateConsumer OrderCreateConsumer 
php think make:command app\console\command\OrderPayConsumer OrderPayConsumer 

Mq消费者消息体参考

{
    "body": "消息内容",
    "body_size": 78,
    "is_truncated": false,
    "content_encoding": null,
    "delivery_info": {
        "channel": {
            "callbacks": {
                "amq.ctag-D9g9MZBdAQqnFXbY3jVHbg": {}
            }
        },
        "delivery_tag": 1,
        "redelivered": true,
        "exchange": "test_exchange",
        "routing_key": "test_key",
        "consumer_tag": "amq.ctag-D9g9MZBdAQqnFXbY3jVHbg"
    }
}

注意事项

1、redis 超时时间需要设置为0,否则Mq消费者运行时会经常超时退出

安装拓展

在RabbitMQ中,我们可以通过消息的过期时间TTL和死信队列DLX来实现延迟队列,虽说这种实现的方式可以用,但是并不推荐,因为比较复杂,还有许多问题。
RabbitMQ官方提供了延迟队列插件rabbitmq-delayed-message-exchange,使我们的使用延迟队列更加简单
官网社区中提供了很多的插件 https://www.rabbitmq.com/community-plugins.html
我们只需要安装 延迟队列插件rabbitmq-delayed-message-exchange 即可

延迟队列插件 rabbitmq-delayed-message-exchange 安装过程

插件github链接 https://github.com/rabbitmq/rabbitmq-delayed-message-exchange

1、下载拓展文件rabbitmq_delayed_message_exchange-3.10.0.ez

比如我下载后的文件名为 rabbitmq_delayed_message_exchange-3.10.0.ez 将文件放到桌面后的路径为 C:\Users\Administrator\Desktop\rabbitmq_delayed_message_exchange-3.10.0.ez

2、将插件上传到docker容器内部

找到运行中的RabbitMQ容器。我的ID是 341e226e2750

docker ps

上传到docker容器内部

docker cp C:\Users\Administrator\Desktop\rabbitmq_delayed_message_exchange-3.10.0.ez 341e226e2750:/plugins

3、进入容器,启动插件 参考文章

docker exec -it 341e226e2750 /bin/sh

同样是在容器内下,执行rabbitmq-plugins enable rabbitmq_delayed_message_exchange,启用插件

# 修改一下权限
cd /plugins
chown -R rabbitmq:rabbitmq rabbitmq_delayed_message_exchange-3.10.0.ez

# 启动各种服务,不需要的可以不启动
su root
cd /opt/rabbitmq/sbin
./rabbitmq-plugins enable rabbitmq_delayed_message_exchange
./rabbitmq-plugins enable rabbitmq_management
./rabbitmq-plugins enable rabbitmq_federation_management
./rabbitmq-plugins enable rabbitmq_mqtt
./rabbitmq-plugins enable rabbitmq_stomp

启用插件可能出现的问题:Plugin configuration unchanged.

插件可能已经启动,不需要重复启动。这个错误不用管

打开控制台

打开浏览器访问 http://localhost:15672/ 就可以看到管理界面
使用rabbitmq 默认的账号密码 guest 登录即可

控制面板可能出现的问题2: Stats in management UI are disabled on this node

cd /etc/rabbitmq/conf.d/
#修改 management_agent.disable_metrics_collector = false
echo management_agent.disable_metrics_collector = false > management_agent.disable_metrics_collector.conf

给TA支持
共{{data.count}}人
人已支持
知道运维

阿里云数据盘拓容不生效

2022-7-15 23:54:40

知道工作日志随笔

在服务器搭建rabbitMq

2022-8-19 16:43:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索