日记54
为了解决订单创建后同步发送短信通知导致接口响应慢的问题,今天用RabbitMQ实现异步通信。先引入 spring-boot-starter-amqp 依赖,在application.yml配置RabbitMQ的主机、端口、账号密码。
创建队列、交换机并绑定,定义一个订单通知的直连交换机,将队列和交换机通过指定路由键绑定。然后编写生产者,在订单创建方法里发送消息到交换机;编写消费者,用 @RabbitListener 注解监听队列,收到消息后调用短信服务发送通知。
测试时,创建订单的接口响应时间从原来的1.2秒缩短到200毫秒,即使短信服务暂时不可用,消息也会存在队列里,不会丢失。小问题:消费者抛出异常时消息会被重复消费,通过设置手动确认模式 acknowledge-mode: manual 并在消费成功后手动确认解决。
浙公网安备 33010602011771号