docker 安装 RabbitMQ & 安装 rabbitmq_delayed_message_exchange插件

docker 安装 RabbitMQ

1. 获取镜像

指定版本,该版本包含了web控制页面

bash 复制代码
docker pull rabbitmq:management

2. 运行镜像

方式一:默认guest 用户,密码也是 guest

bash 复制代码
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management

方式二:设置用户名和密码

bash 复制代码
docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password -p 15672:15672 -p 5672:5672 rabbitmq:management

3. 访问URL页面

使用浏览器访问 http://localhost:15672/,显示RabbitMQ标志说明安装成功。

下载延迟插件

查看镜像的信息以获取版本号

bash 复制代码
docker inspect rabbitmq:management


根据版本号下载延迟插件,前往 Community Plugins

笔者的RabbitMQ 版本是3.13.0,所以这里选择下载3.13.0版本的插件

将插件文件上传到服务器,笔者是直接上传到/root下了

安装延迟插件并启用

将刚刚上传的插件拷贝到容器内plugins目录下

bash 复制代码
docker cp /root/rabbitmq_delayed_message_exchange-3.13.0.ez rabbit:/plugins

我刚刚是将插件上传到/root下了; rabbit是容器的name,也可以使用容器id

进入到RabbitMQ容器内部

bash 复制代码
docker exec -it rabbit /bin/bash

查看插件是否存在

复制代码
root@my-rabbit:/# cd plugins
root@my-rabbit:/plugins# ls | grep delay

启用插件(注意是在plugins内)

复制代码
root@my-rabbit:/plugins# rabbitmq-plugins enable rabbitmq_delayed_message_exchange

从容器中退出

复制代码
root@my-rabbit:/plugins# exit

重启RabbitMQ容器

bash 复制代码
docker restart rabbit

容器启动成功之后,登录RabbitMQ的管理界面(IP:15672 访问web界面),找到ExchangesTab页。点击Add a new exchange,在Type里面查看是否有x-delayed-message选项,如果存在就代表插件安装成功。

测试程序(核心部分)

监听端

java 复制代码
@RabbitListener(bindings = @QueueBinding(
        value = @Queue(value = "delay.queue", durable = "true"),
        exchange = @Exchange(value = "delay.direct", delayed = "true"),
        key = "hi"
))
public void listenDelayQueue(String msg) {
    log.info("消费者接收到delay.queue的消息:[" + msg + "]");
}

消息发送端

java 复制代码
@Test
public void testSendDelayMessage() {
     rabbitTemplate.convertAndSend("delay.direct", "hi", "hello", new MessagePostProcessor() {
         @Override
         public Message postProcessMessage(Message message) throws AmqpException {
             message.getMessageProperties().setDelay(10000);
             return message;
         }
     });
     log.info("消息发送成功!");
 }

参考链接:Docker安装RabbitMQ并安装延迟插件

相关推荐
databook3 分钟前
手把手带你走一遍:机器学习模型如何用FastAPI和Docker部署
python·docker·fastapi
江湖有缘1 小时前
3款开源日记工具整理合集,可Docker一键部署!
docker·容器·开源
EatFans13 小时前
Docker 实战部署:从本地镜像到云服务器,一篇走通 FastAPI + Celery + MySQL + Redis + Nginx
docker·fastapi
judezh13 小时前
api 容器一直 unhealthy?我把一个 Agent 运行时的健康检查逐条拆了,查出四个问题
运维·docker
暗不需求13 小时前
Docker 入门:从「光盘与 DVD」到全栈项目容器化实战
docker·容器·面试
探索云原生14 小时前
一个 Deployment 就能跑 vLLM,为什么还需要 KServe?
docker·ai·云原生·kubernetes·go
分布式存储与RustFS6 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
玉&心6 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing6 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
guo_wen_qiang6 天前
上传本地镜像到harbor中
docker·容器·持续部署