Rabbitmq相关配置

Spring+RabbitMQ的相关配置

提示:消息中间件rabbitmq的使用



前言

本文主要介绍springboot整合rabbitmq的使用。


一、RabbitMQ是什么?

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

特性:
可伸缩性:集群服务
消息持久化:从内存持久化消息到硬盘,再从硬盘加载到内存
可靠性:使用了一些机制来保证可靠性,比如持久化、生产确认、消费确认机制等。
灵活的路由:在消息进入队列之前,通过exchange来路由消息,对于典型的路由功能,RabbitMQ已经提供了一些内置的exchange来实现,针对更复杂的路由功能,可以将多个exchange绑定在一起,可以能通过插件机制来自己实现exchange。
消息集群:多个server组成一个集群。
高可用:队列可以在集群中的机器上进行镜像,部分节点出问题的情况下队列仍然可用。
多种协议:支持多种消息队列协议,如STOMP、MQTT等。
多语言客户端:几乎支持所有的常用语言,比如Java、ruby等。
管理界面:提供了易用的用户界面,用户可以监控和管理消息。
跟踪机制:如果消息异常,RabbitMQ提供了消息的跟踪机制,使用者可以找出发生了什么。
插件机制:提供了很多插件,也可以自己实现插件。

核心概念

1、生产者
产生数据,发送消息的程序是生产者。

2、消费者
消费与接收具有相似的含义。消费者大多时候是一个等待接收消息的程序。 请注意生产者,消费者和消息中间件很多时候并不在同一机器上。同一个应用程序既可以是生产者又是可以是消费者。

3、队列
队列是 RabbitMQ 内部使用的一种数据结构, 尽管消息流经 RabbitMQ 和应用程序,但它们只能存储在队列中。队列仅受主机的内存和磁盘限制的约束,本质上是一个大的消息缓冲区。许多生产者可以将消息发送到一个队列,许多消费者可以尝试从一个队列接收数据。这就是我们使用队列的方式。

4、交换机
交换机是 RabbitMQ 非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息推送到队列中。交换机必须确切知道如何处理它接收到的消息,是将这些消息推送到特定队列还是推送到多个队列,亦或者是把消息丢弃,这个得有交换机类型决定。

二、使用步骤

1.导入pom依赖

依赖如下:

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

2.yml配置

配置如下:

spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

三、FanRabbitMqConfig配置

package com.example.demo.config;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;

@Configuration
public class FanRabbitMqConfig {

// 创建消息队列
    @Bean
    public Queue cig1KQueen() {
        // 消息过期 特殊的args
        // args参数可自行查看官方文档进行使用
        Map<String, Object> args = new HashMap<>(16);
        args.put("x-message-ttl", 10000);
        // 设置队列可以存储的最大消息数量
        args.put("x-max-length", 10);
        return new Queue("test_queue", false, true, false, args);
    }
// 创建交换机
    @Bean
    FanoutExchange oneKExchange() {
        return new FanoutExchange("test");
    }
// 消息队列绑定交换机
    @Bean
    Binding bindCigSingle() {
        return BindingBuilder.bind(cig1KQueen()).to(oneKExchange());
    }



    @Bean
    public Queue cig10KQueen() {
        // 消息过期 特殊的args
        Map<String, Object> args = new HashMap<>(16);
        args.put("x-message-ttl", 10000);
        // 设置队列可以存储的最大消息数量
        args.put("x-max-length", 10);
        return new Queue("test_queue2", false, true, false, args);
    }

    @Bean
    FanoutExchange tenKExchange() {
        return new FanoutExchange("test2");
    }

    @Bean
    Binding bindCig10K() {
        return BindingBuilder.bind(cig10KQueen()).to(tenKExchange());
    }


}

四、定义消息推送方法

package com.example.demo.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

/**
 * @author lhp
 * @version 1.0.0
 * @Description 实体类描述
 * @date 2022/7/29  17:05
 */
@Component
@Slf4j
public class SendMessage {

    @Autowired
    private AmqpTemplate rabbitTemplate;

    /**
     * 消息推送方法
     * @param message
     */
    public void sendMessage(String message){
        log.info("message:"+message);
        rabbitTemplate.convertAndSend("test_queue",message);
        log.info("队列发送成功");
    }


}

调用该类里面的sendMessage()方法推送消息

五、监听消息队列,处理消息

有多种方式,这里采用最简单的注解实现

@RabbitListener(queues = "test_queue")
public void getMessage(String message) throws Exception {
    System.out.println("1接收到的消息:"+message);
    // 序列化消息进行写入数据库等操作
    HashMap object = JSON.parseObject(message,HashMap.class);
}

总结

本文主要是针对springboot和rabbitmq的整合,除此之外还有一些其他的消息中间件,如:Kafka、RocketMQ、轻量级消息中间件 MQTT等,感兴趣的朋友可以自行了解。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RabbitMQ配置可以通过以下几个步骤进行: 1. 下载并安装RabbitMQ服务器:从RabbitMQ官方网站下载rabbitmq-server-3.8.14.exe安装程序,并按照默认配置进行安装。这将安装RabbitMQ服务并将其作为Windows服务运行。 2. 配置Spring Boot应用程序使用RabbitMQ:在Spring Boot应用程序中,可以通过修改application.properties或application.yml文件来配置RabbitMQ连接参数。可以设置以下参数来连接RabbitMQ服务器: - spring.rabbitmq.host:RabbitMQ服务器的主机名或IP地址。 - spring.rabbitmq.port:RabbitMQ服务器的端口号,默认为5672。 - spring.rabbitmq.username:连接RabbitMQ服务器的用户名。 - spring.rabbitmq.password:连接RabbitMQ服务器的密码。 例如,在application.properties文件中,可以添加以下配置: ``` spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=admin spring.rabbitmq.password=secret ``` 3. 配置RabbitMQ服务器:可以通过编辑RabbitMQ服务器的配置文件来进行更高级的配置。在Windows系统中,默认的配置文件位于`C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.14`。可以打开该文件并根据需要进行修改。 注意:在修改配置文件之前,请备份原始配置文件以防止意外情况发生。 总结起来,配置RabbitMQ涉及到下载并安装RabbitMQ服务器,配置Spring Boot应用程序连接参数,以及根据需要修改RabbitMQ服务器的配置文件。这样就可以开始使用RabbitMQ进行消息传递和处理了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值