当前位置:首页 > 服务端 > RabbitMQ安装以及SpringBoot整合RabbitMQ

RabbitMQ安装以及SpringBoot整合RabbitMQ

2022年08月05日 21:45:34服务端12

SpringBootMQ整合Rabbit

RabbitMQ安装以及SpringBoot整合

1、Docker安装RabbitMQ

#拉取rabbitmq镜像
docker pull rabbitmq

#启动RabbitMQ
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq

#安装图形化插件
#进入容器
docker exec -it 容器id /bin/bash
#安装插件
rabbitmq-plugins enable rabbitmq_management

注意
你在操作图形化界面时,可能会出现该问题:Management API returned status code 500,如下图:
RabbitMQ安装以及SpringBoot整合RabbitMQ _ JavaClub全栈架构师技术笔记

解决方案:

#进入rabbitmq容器,修改配置文件
docker exec -it 容器id /bin/bash
cd /etc/rabbitmq/conf.d/
echo management_agent.disable_metrics_collector = false > management_agent.disable_metrics_collector.conf
exit

运行成功后可以访问:localhost:15672 初始化账号和密码为:guest
远端服务器如果访问不到,注意是否忘记安全组设置开放端口
RabbitMQ安装以及SpringBoot整合RabbitMQ _ JavaClub全栈架构师技术笔记

2、SpringBoot集成RabbitMQ

2.1 引入依赖

父类pom文件

<parent>
        <artifactId>spring-boot-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>2.6.0</version>
 </parent>


 <!--依赖-->
    <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>
    </dependencies>

2.2 创建生产者项目producer

application.yml

server:
  port: 8081

spring:
  rabbitmq:
    host: localhost
    port: 5672
    virtual-host: /
    username: guest
    password: guest

RabbitMQConfig

@Configuration
public class RabbitMQConfig {
     

    /**
     * 创建交换机
     * @return
     */
    @Bean(name = "itemTopicExchange")
    public Exchange createTopicExchange(){
     
        return ExchangeBuilder.topicExchange("item_topic_exchange").build();
    }

    /**
     * 创建消息队列
     * @return
     */
    @Bean(name = "itemQueue")
    public Queue createItemQueue(){
     
        return QueueBuilder.durable("item_queue").build();
    }

    /**
     * 队列绑定交换机
     * @param queue
     * @param exchange
     * @return
     */
    @Bean
    public Binding bindingQueueToExchange(@Qualifier("itemQueue") Queue queue,
                                          @Qualifier("itemTopicExchange") Exchange exchange){
     
        return BindingBuilder.bind(queue).to(exchange).with("item.#").noargs();
    }
}

TopicController

@RestController
@RequestMapping("/topic")
public class TopicController {
     

    //用于发送MQ消息
    @Autowired
    private RabbitTemplate rabbitTemplate;

    @GetMapping("/send")
    public String sendMessageToTopicQueue(){
     
        rabbitTemplate.convertAndSend("item_topic_exchange", "item.insert", "商品新增,routing key 为item.insert");
        rabbitTemplate.convertAndSend("item_topic_exchange", "item.update", "商品修改,routing key 为item.update");
        rabbitTemplate.convertAndSend("item_topic_exchange", "item.delete", "商品删除,routing key 为item.delete");
        return "生产者发送消息到消息队列";
    }
}

2.3 创建消费者工程

application.yml

server:
  port: 8082

spring:
  rabbitmq:
    host: localhost
    port: 5672
    virtual-host: /
    username: guest
    password: guest

消息监听MessageListener

@Component
public class MessageListener {
     

    /**
     * 监听某个队列的消息
     * @param message 接收到的消息
     */
    @RabbitListener(queues = "item_queue")
    public void myListener(String message){
     
        System.out.println("消费者接收到的消息" + message);
    }
}

启动生产者,并发送消息:
发送请求:http://localhost:8081/topic/send
RabbitMQ安装以及SpringBoot整合RabbitMQ _ JavaClub全栈架构师技术笔记
RabbitMQ安装以及SpringBoot整合RabbitMQ _ JavaClub全栈架构师技术笔记
消费者监听到消息后消费消息:
RabbitMQ安装以及SpringBoot整合RabbitMQ _ JavaClub全栈架构师技术笔记
Gitee项目地址:rabbitmq-topic模式demo

作者:CODING一场空
来源链接:https://blog.csdn.net/NeverFG/article/details/122868185

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/17688.html

分享给朋友:

“RabbitMQ安装以及SpringBoot整合RabbitMQ” 的相关文章

RabbitMQ配置SSL

RabbitMQ配置SSL

引言 主要介绍了如何通过Docker安装RabbitMQ并配置SSL;配置成功之后给出了SpringBoot和Python集成的例子。 生成证书 $ git clone https://github.com/Berico-Technol...

消息中间件RabbitMQ学习笔记---RabbitMQ简介

消息中间件RabbitMQ学习笔记---RabbitMQ简介

消息中间件RabbitMQ学习笔记—RabbitMQ简介 1.RabbitMQ简介 RabbitMQ,俗称“兔子MQ”(可见其轻巧,敏捷),是目前非常热门的一款开源消息中间件,不管是互联网行业还是传统行业都广泛使用(最早是为了解决电信...

linux查看rabbitmq运行状态,RabbitMQ常用命令

RabbitMQ常用命令 rabbitmqctl命令 http://www.rabbitmq.com/man/rabbitmqctl.1.man.html# 1). 服务器启动与关闭 启动: rabbitmq-server –detach...

Linux系统Centos7安装RabbitMQ使用压缩包配置环境变量RabbitMQ 3.8.16.tar.xz Erlang 24

Linux系统Centos7安装RabbitMQ使用压缩包配置环境变量RabbitMQ 3.8.16.tar.xz Erlang 24

文件的下载1、创建两个安装信息的存放文件夹sudo mkdir /usr/local/rabbitmqsudo mkdir /usr/local/erlang  2、下载rabbitmq和erlangcd /usr/local/rab...

Docker部署RabbitMQ

Docker部署RabbitMQ

【前言】 Docker : Docker is a set of platform as a service (PaaS) products that use OS-level virtualization to deliver software in...

centos7 yum安装rabbitmq-server

centos7 yum安装rabbitmq-server

一、查看支持rabbitmq-server的软件包并安装 yum provides rabbitmq-server yum install rabbitmq-server yum安装时安装了其他依赖 二、启动rabbitmq-server...

Rabbitmq的安装与使用

Rabbitmq的安装与使用

 一、Rabbitmq的介绍        Rabbitmq是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如,Python、Ruby、php等语言。支持ajax,用于在分布式系统中存储转发消息,在...

RabbitMQ消息堆积问题

RabbitMQ消息堆积问题

当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限。最早接收到的消息,可能就会成为死信,会被丢弃,这就是消息堆积问题。 解决消息堆积有三种思路: 增加更多消费者,提高消费速度 在消费者...

RabbitMq的一些概念,持久化、队列排他、自动删除、消息确认机制、消息ACK、消费消息的模式

一、队列持久化的概念 队列的声明默认是存放到内存中的,如果rabbitmq重启会丢失,如果想重启之后还存在就要使队列持久化,保存到Erlang自带的Mnesia数据库中,当rabbitmq重启之后会读取该数据库。 二、排他 简单理解就是在连接关闭时是否会删除队列...

RabbitMQ消息确认机制(ACK)

RabbitMQ消息确认机制(ACK)

1、消息确认机制(ACK) 为了保证消息从队列可靠的达到消费者,RabbitMQ 提供了消息确认机制(Message Acknowledgement)。消费者在订阅队列时,可以指定 autoAck 参数,当 autoAck 参数等于 false 时,RabbitMQ 会等待...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。