docker安装RabbitMQ和延时插件

1 篇文章 0 订阅
订阅专栏

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)

使用 docker安装 RabbitMQ和延时插件,实现消息延时消费

目录

1、docker 安装 RabbitMQ

2、安装延时插件 

3、测试延时消息


1、docker 安装 RabbitMQ

docker拉取镜像

docker pull rabbitmq:3.10-management

开启容器

docker run -it --name rabbitmq -p 5672:5672 -p 15672:15672 -d rabbitmq:3.10-management

开启容器后,浏览器访问宿主机器 ip+15672端口,访问RabbitMQ管理页面

笔者的宿主机器 ip 是 192.168.5.25

初始账号密码都是guest 

2、安装延时插件 

下载插件地址: https://www.rabbitmq.com/community-plugins.html

找到 rabbitmq_delayed_message_exchange

点击进入下载页面

找到对应的版本进行下载

下载插件后,将插件上传到服务器

使用 docker 命令将插件复制到容器内部 plugins目录下

docker cp rabbitmq_delayed_message_exchange-3.10.0.ez  rabbitmq:/plugins

进入容器内部进行查看

docker exec -it rabbitmq bash

 进入 plugins 目录查看

cd plugins

执行命令安装插件

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

通过命令查看已安装的插件

rabbitmq-plugins list

 

退出容器后,重启 rabbitmq 容器

docker restart rabbitmq

 

重启完成后,进入管理页面,点击交换机 Exchange,点开 Add a new exchange,查看交换机类型 Type,发现里面新增了 x-delayed-message 类型,则延时插件安装成功

3、测试延时消息

新建 SpringBoot 项目

pom.xml内容

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.wsjzzcbq</groupId>
    <artifactId>rabbitmq-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>rabbitmq-demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.amqp</groupId>
            <artifactId>spring-rabbit-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.7.RELEASE</version>
                <configuration>
                    <mainClass>com.wsjzzcbq.RabbitmqDemoApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

application.properties内容

# 应用名称
spring.application.name=rabbitmq-demo
# 应用服务 WEB 访问端口
server.port=8080

spring.rabbitmq.addresses=192.168.5.25
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/
spring.rabbitmq.publisher-confirm-type=correlated
spring.rabbitmq.publisher-returns=true
spring.rabbitmq.template.mandatory=true
spring.rabbitmq.connection-timeout=5000

spring.rabbitmq.listener.simple.acknowledge-mode=manual
spring.rabbitmq.listener.simple.concurrency=1
spring.rabbitmq.listener.simple.max-concurrency=5

启动类 RabbitmqDemoApplication 内容

package com.wsjzzcbq;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class RabbitmqDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(RabbitmqDemoApplication.class, args);
    }

}

RabbitConsumer 消费者内容

package com.wsjzzcbq.rabbit;

import com.rabbitmq.client.Channel;
import org.springframework.amqp.rabbit.annotation.*;
import org.springframework.amqp.support.AmqpHeaders;
import org.springframework.messaging.Message;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * RabbitConsumer
 *
 * @author wsjz
 * @date 2022/10/26
 */
@Component
public class RabbitConsumer {

    /**
     * 注解会自动创建交换机队列及其绑定
     * @param message
     * @param channel
     * @throws IOException
     */
    @RabbitListener(bindings = @QueueBinding(
            value=@Queue(value="queue-poetry",durable="true"),
            exchange=@Exchange(
                    value="exchange-delayed",
                    arguments = {@Argument(name="x-delayed-type", value = "direct")},
                    type = "x-delayed-message",
                    ignoreDeclarationExceptions="true"),
            key="poetry"
    ))
    public void onMessage(Message<String> message, Channel channel) throws IOException {
        String name = (String) message.getHeaders().get("name");
        System.out.println(name);
        Long deliveryTag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG);
        //手工签收
        channel.basicAck(deliveryTag, false);

        String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        System.out.println("消息已接收" + now + ":" + message.getPayload());
    }
}

RabbitProducer 生产者内容

package com.wsjzzcbq.rabbit;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHeaders;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Map;

/**
 * RabbitProducer
 *
 * @author wsjz
 * @date 2022/10/26
 */
@Component
public class RabbitProducer {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    /**
     * 发送消息
     * @param msg
     * @param properties
     * @param millisecond
     */
    public void sendMessage(Object msg, Map<String, Object> properties, int millisecond) {
        MessageHeaders messageHeaders = new MessageHeaders(properties);
        Message content = MessageBuilder.createMessage(msg, messageHeaders);

        rabbitTemplate.convertAndSend("exchange-delayed", "poetry", content, (message)->{
            message.getMessageProperties().setHeader("x-delay", millisecond);
            return message;
        });

        String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        System.out.println("消息已发送" + now + ":" + msg);
    }

}

DemoController 内容

package com.wsjzzcbq.controller;

import com.wsjzzcbq.rabbit.RabbitProducer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;

/**
 * DemoController
 *
 * @author wsjz
 * @date 2022/10/26
 */
@RestController
public class DemoController {

    @Autowired
    private RabbitProducer producer;

    @RequestMapping("/send")
    public String send() {
        Map<String, Object> map = new HashMap<>();
        map.put("name", "花月吟.唐伯虎");
        //消息发送,延时5秒钟
        producer.sendMessage("如此好花如此月, 莫将花月作寻常", map, 5 * 1000);
        return "ok";
    }
}

启动项目,会自动创建交换机和队列,进入管理页面查看交换机 exchange-delayed

运行测试

浏览器访问: http://localhost:8080/send

看控制台打印时间间隔

消费者端延时5秒钟收到消息

至此完

DockerRabbitMQ下载插件并且安装
qq_41491194的博客
01-17 2137
DockerRabbitMQ下载插件并且安装 这里拿延迟消息插件举例 先去github下载到对应插件延迟信息插件 如需其它请访问:rabbitmq其它插件下载 选择旁边的releases 进入到该页面,选择自己想要的版本 这里选择了3.9.0版本,选择带有ez后缀的下载,随后放入到自己的服务器 本人是虚拟机+Centos7+Docker 1.将下载好的插件放入到主机的目录下 这里本人用的是xftd,放入的 2.先查看自己启动的rabbitmq容器号是多少? docker ps 可以看到我自己的是3
docker安装rabbitmq延迟队列插件
m0_46360888的博客
04-14 822
安装延迟队列插件
docker安装rabbitmq延迟插件(不废话版)
qq_42403906的博客
06-12 293
docker安装rabbitmq延迟插件
docker安装rabbitMq延时插件
m0_65775974的博客
12-26 831
1、下载rabbitmq-delayed-message-exchange 插件 https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases 2、保存到本地并上传到Linux自定义任意位置(rabbitmq_delayed_message_exchange-3.9.0.ez) 3、进入放rabbitmq_delayed_message_exchange-3.9.0.ez插件的目录 cd /usr/local
docker中,RabbitMQ安装延迟插件
qq_56229203的博客
06-14 744
docker中,RabbitMQ安装延迟插件
Docker RabbitMq安装Rabbit-delayed-message-exchage插件
weixin_42975117的博客
06-18 385
下载完成之后将插件通过sftp工具上传到虚拟机,上传虚拟机完成后,通过docker cp指令将虚拟机上的插件拷贝到rabbitmq容器的plugins下,拷贝成功之后执行docker exec -it 8a4ff4f73ffd /bin/bash 进入到容器内部,查看plugins目录下是否拷贝成功。通过指令查看到了docker安装rabbitmq的一些版本等详情信息,可以看到我本地安装rabbitmq的版本为3.9.11。看到image的版本为latest为最新的。
rabbitmq 启动报错 unknown exchange type ‘x-delayed-message‘
热门推荐
程冯冯的博客
08-17 2万+
产生问题的原因 rabbitmq中默认只有四中交换机类型:headers、direct、fanout、topic。 所以我们需要自己安装一个x-delayed-message类型的交换机 x-delayed-message的安装 1、 下载插件 点击,下载 rabbitmq_delayed_message_exchange-3.8.0.ez。 2、将下载的包放到 /RABBIT_HOME/plugins下。 3、执行命令rabbitmq-plugins enable rabbitmq_delayed_me
docker安装rabbitmq3.8集群-3台-详细笔记文档-带安装
07-16
docker安装rabbitmq3.8集群-3台-详细笔记文档-带安装
docker安装rabbitmq并整合springboot
11-24
通过 Docker 安装 RabbitMQ,可以实现轻松快速的部署和管理。本文将指导您如何使用 Docker 安装 RabbitMQ,并整合 Spring Boot 实现消息队列功能。 Docker 安装 RabbitMQ 使用 Docker 安装 RabbitMQ 需要以下步骤...
docker 安装 rabbitmq
11-14
docker 安装 rabbitmq
docker安装RabbitMQ安装延迟插件.doc
07-10
"Docker 安装 RabbitMQ安装延迟插件" 本文将详细介绍如何使用 Docker 安装 RabbitMQ ...本文详细介绍了如何使用 Docker 安装 RabbitMQ安装延迟插件,并解释了 MQ 的概念、优点和安装步骤,希望对读者有所帮助。
docker 安装rabbitmq3.13.3
最新发布
07-08
docker 安装rabbitmq3.13.3
一文熟知docker安装RabbitMQ安装延迟插件
q66562636的博客
06-14 999
MQ(message queue)字面意思上来说消息队列,FIFO先入先出,队列中存入的内容是message,是一种跨进程的通信机制,用于上下游传递消息。MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不 用依赖其他服务。比如说订单系统最多一次可以处理一万次订单,这个处理能力在正常时段下单时绰绰有余,但是在高峰期时如果有两万次下单操作系统是处理不了的只能限制订单超过一万次后不允许用户下单,但是如果使用消息队列做缓冲,我们可以取消这个限制,把
docker安装rabbitmq延时插件rabbitmq_delayed_message_exchange
江黎
11-30 4025
第一种方式是进入容器内部去安装 首先下载镜像和启动 rabbitmq: restart: always image: rabbitmq:management container_name: rabbitmq ports: - 5672:5672 - 15672:15672 networks: default: ipv4_address: 172.18.0.5 environment: ...
Docker安装RabbitMQ安装延时队列插件
egegerhn的博客
05-01 867
一、RabbitMQ简介 RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛。 二、docker安装RabbitMQ 1、搜索镜像 docker search rabbitmq 2、拉取并运行容器 docker run -dit --name rabbitmq -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_
docker安装RabbitMQ延迟队列插件
magic_1024的博客
01-05 7929
Docker环境下安装RabbitMQ延迟队列插件
docker安装RabbitMQ安装延时队列插件(delayed_message_exchange)
penganchunyan的博客
11-24 1827
1.安装docker请参考 https://blog.csdn.net/penganchunyan/article/details/115049939?spm=1001.2014.3001.5501 2.拉取镜像 docker pull rabbitmq:management 3.根据下载的镜像创建和启动容器 docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management --restart=always –re
Docker安装RabbitMQ安装延迟插件
m0_67392931的博客
04-14 247
安装Docker 一键安装docker curl -sSL https://get.daocloud.io/docker | sh 启动docker sudo systemctl start docker Docker安装RabbitMQ 拉取镜像 docker pull rabbitmq:management 启动镜像 注意修改用户名和密码 docker run -d -p 5672:5672 -p 15672:15672 -p 15674:15674 -p 5671:5671 -p 1567
docker安装rabbitmq镜像,做成容器
hengliang_的博客
11-18 343
1.首先查看rabbit的镜像 docker search rabbit 根据自己的需要自行根据版本号下载 注意:如果需要有web客户端的,需要下载:docker pull3-management tag为3-management时带有web管理界面的,latest不带管理界面 2.查看下载好的镜像 开始创建rabbitmq容器 docker run -d --name myrabbitmq -p 5672:5672 -p 15672:15672 rabb...
docker安装rabbitmq插件
04-06
安装RabbitMQ插件,可以使用Docker。具体步骤如下: 1. 首先,在Docker中搜索并下载RabbitMQ镜像。 2. 然后,在Docker中创建一个RabbitMQ容器。 3. 接下来,在容器中运行RabbitMQ-server并安装RabbitMQ插件。 4. 最后,启动RabbitMQ服务即可。 需要注意的是,安装RabbitMQ插件可能需要添加额外的命令或配置,具体取决于所需的插件Docker环境。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • IDEA 添加 Tomcat 192987
  • mybatis 批量将list数据插入到数据库 164251
  • tomcat 配置环境变量 142216
  • 无法启动此程序,因为计算机中丢失VCRUNTIME140_1.dll。尝试重新安装该程序一解决问题。 89104
  • mybatis if 标签使用总结 83792

分类专栏

  • 源码 4篇
  • 分布式 1篇
  • 简明Java讲义 2篇
  • docker 之路 11篇
  • 设计模式 之路 18篇
  • spring 8篇
  • spring boot 17篇
  • spring cloud 8篇
  • dubbo 5篇
  • mybatis 11篇
  • mybatis plus 2篇
  • spring data 1篇
  • mysql 19篇
  • oracle 2篇
  • redis 2篇
  • mongoDB 1篇
  • RabbitMQ 1篇
  • Kafka 3篇
  • RocketMQ 2篇
  • maven 17篇
  • vue 28篇
  • react 4篇
  • Angular 2篇
  • View UI 6篇
  • Element UI 1篇
  • layui 1篇
  • webpack 7篇
  • node 9篇
  • Android 9篇
  • 微信小程序 5篇
  • uni-app 2篇
  • linux 14篇
  • html5 5篇
  • css 1篇
  • lucene 1篇
  • elasticsearch 2篇
  • datatables 8篇
  • javascript 10篇
  • jquery 9篇
  • tomcat 4篇
  • java 40篇
  • Scala 1篇
  • golang 14篇
  • C++ 1篇
  • python 6篇
  • tensorflow 1篇
  • svn 3篇
  • git 3篇
  • ztree 1篇
  • apache 4篇
  • thymeleaf 1篇
  • freemarker 1篇
  • docker 16篇
  • kubernetes 1篇
  • 阿里云 1篇
  • IDEA 23篇
  • eclipse 15篇
  • gradle 1篇
  • nginx 3篇
  • hadoop 1篇
  • iText 1篇
  • JasperReport 2篇
  • jenkins 2篇
  • MinIO 1篇
  • Selenium 1篇
  • 设计模式 18篇
  • 工具 12篇

最新评论

  • 使用 ClassFinal 对 java class 文件进行加密防止反编译

    ruahua: 在docker中运行的话 密码在docker inspect 中不是会暴露来嘛 请问这个怎么解决呢

  • linux 安装 RocketMQ

    叶莫似故非: 兄弟,你这里留了个坑啊,10909端口也需要开防火墙

  • @value 注解注入静态变量

    悟世君子: 报什么错

  • @value 注解注入静态变量

    xuejing: 为啥方法上 @value报错

  • minikube 简单搭建 kubernetes(k8s)环境

    研究司马懿: 打错了,提权,你再部署部署试试能跑起来不

大家在看

  • c语言入门1,小白关注包成大佬的(尽量日更) 296
  • 降低大模型推理87%时延!华为云论文入选顶会USENIX ATC‘24 599
  • 顶级 Vue 管理仪表板和模板
  • 解决问题Vue脚手架创建失败问题 124
  • 蓝易云 - 如何有效缓解香港服务器出现的高延迟问题? 260

最新文章

  • Beego 使用教程 9:ORM 操作数据库(上)
  • Beego 使用教程 8:Session 和 Cookie
  • Beego 使用教程 7:Web 文件上传下载和错误处理
2024年13篇
2023年31篇
2022年28篇
2021年34篇
2020年61篇
2019年159篇
2018年77篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟世君子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码罗湖百度竞价坪地优化石岩营销网站坂田百度竞价包年推广大运网站优化按天扣费坂田百度标王南澳英文网站建设广州模板网站建设光明营销网站惠州网站定制光明关键词排名松岗建网站南联网站排名优化双龙百搜标王西乡网站制作石岩SEO按效果付费盐田企业网站改版深圳网站改版坪山网站制作设计龙华阿里店铺运营龙岗SEO按天计费民治网站优化推广双龙关键词排名包年推广横岗网站设计模板南澳如何制作网站塘坑外贸网站设计南澳网站建设设计大鹏网站搭建西乡网站优化按天收费吉祥网络推广歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化