消息中间件

@TOC

1/基本概念

1、消息队列MQ
在这里插入图片描述
是一个搭建号的服务器,可以和大部分框架进行整合
应用场景
在这里插入图片描述

消息中间件

在这里插入图片描述
消息中间件的组成
在这里插入图片描述
消息被处理的过程称为消费
queue是点对点的关系,只能被一个consumer处理,不能被反复处理
topic,只要订阅了就可以处理
在这里插入图片描述
在这里插入图片描述
消息中间件的优势
在这里插入图片描述
示例:
参与抢购——消息中间件进行验证,验证成功——通知你成功参与抢购——消息中间件处理(队列慢慢处理)——然后通知是否抢购成功

涌入的多,处理就慢,涌入的少,处理的快

请求——验证(15ms,此处需要严谨)——写入SQL(50ms)——发短信通知(50ms)——发邮件响应(50ms)——总时间165ms,这种响应时间是硬性的,可以写到3个队列里面

Rabbit MQ

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
AMQP协议相关概念
在这里插入图片描述
在这里插入图片描述
常用的交换器
点对点
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
所有的消费者都要处理

代码实操

连接宿主机

打开虚拟机

打开服务器

配置文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将mq的文件夹移到虚拟机
在这里插入图片描述
在这里插入图片描述
15672是界面访问端口,5672交流和使用的端口
在这里插入图片描述

代码

创建项目

依赖

 <!-- rabbitmq依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

配置

server:
  port: 8080

spring:
  rabbitmq:
    host: 192.168.29.128 #主机地址
    port: 5672 #数据处理的端口
    username: guest
    password: guest

Product.java生成消息

@Component
public class Producer {

    @Autowired
    private RabbitTemplate rabbitTemplate; 

    /** 发布消息 */
    public void produce(int code){

        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");

        //获取消息内容
        String message = sdf.format(new Date()) + "-" + code;
        System.out.println("发布消息:" + message);
        rabbitTemplate.convertAndSend("test_rabbit", message);
    }
}

消费消息,不需要任何的调用

@Component
public class Consumer {

    @RabbitHandler
    @RabbitListener(queuesToDeclare = @Queue("test_rabbit"))  //监听这个队列
    public void consume(String message){
        System.out.println("消费消息:" + message);
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
@RestController
public class TestController {

    @Autowired
    private Producer producer;

    @PostMapping("send")
    public Object sendMessage(){

        for (int i = 1; i <= 200; i++){
            producer.produce(i);
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        return "已发布200个消息";
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值