RABBIT_MQ消息队列

RabbitMq学习

工作原理

组成部分说明:

  • Broker:消息队列服务进程,此进程包括两个部分:Exchange和Queue
  • Exchange:消息队列交换机,按一定的规则将消息路由转发到某个队列,对消息进行过虑。
  • Queue:消息队列,存储消息的队列,消息到达队列并转发给指定的
  • Producer:消息生产者,即生产方客户端,生产方客户端将消息发送
  • Consumer:消息消费者,即消费方客户端,接收MQ转发的消息。

请添加图片描述

消息确认机制(ACK)

RabbitMQ有一个ACK机制。当消费者获取消息后,会向RabbitMQ发送回执ACK,告知消息已经被接收。不过这种回执ACK分两种情况:

  • 自动ACK:消息一旦被接收,消费者自动发送ACK
  • 手动ACK:消息接收后,不会发送ACK,需要手动调用

Springboot整合MQ

依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
    <version>2.6.13</version>
</dependency>
server:
  port: 10200
spring:
  rabbitmq:
    host: 10.0.0.177
    port: 5672
    username: xxx
    password: xxx
    virtual-host: learn

配置类,配一个队列出来

@Configuration
public class RabbitConfig {

    @Bean
    Queue simpleQueue(){
        return new Queue("Learn_MyQueue_test",true);
    }
}

springboot启动后不断监听mq的消息

@Component
public class HelloConsume {

    @RabbitListener(queues = "Learn_MyQueue_test")
    public void receive(String msg){
        System.out.println("hello receive:"+msg);
    }
}

使用test单元,模拟发送一条消息

@SpringBootTest
class LearnMqApplicationTests {


    @Autowired
    RabbitTemplate rabbitTemplate;
    @Test
    public void testSend() {
        rabbitTemplate.convertAndSend( "Learn_MyQueue_test","生产者发送的消息!");
    }
}

运行boot后,发送一条消息后,会在boot中监听到这条消息。

上面代码中可以省去配置类,直接声明队列

@RabbitListener(queuesToDeclare = @Queue(name = "Learn_MyQueue_test1"))
public void receive(String msg){
    System.out.println("hello receive:"+msg);
}

四种交换机

  1. 直接交换机(Direct Exchange)

    • 适用于需要基于路由键精确匹配的场景。
    • 如果接收方不想接收某些消息,可以通过不绑定相应的路由键到队列来实现。
  2. 主题交换机(Topic Exchange)

    • 适用于需要基于模式匹配路由键的场景。
    • 接收方可以通过绑定不同的模式到队列来选择性接收消息,例如使用*#通配符。
  3. 头交换机(Headers Exchange)

    • 适用于需要根据消息的头部属性进行匹配的场景。
    • 接收方可以通过设置不同的头部属性和值来选择性接收消息。
  4. 扇出交换机(Fanout Exchange)

    • 适用于广播消息到所有绑定的队列,不考虑路由键。
    • 接收方可以选择绑定到交换机的队列来接收所有消息,或者不绑定来避免接收。、

交换机例子

配置类,四个交换机,一个主题,四种绑定的方式

import org.springframework.amqp.core.*;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值