JavaWeb后端开发Spring框架之消息 消息队列案例--订单短信通知

简介: JavaWeb后端开发Spring框架之消息 消息队列案例--订单短信通知

消息队列案例

首先我们书写一个业务层接口

定义的是发送消息

短信消息处理

package com.bigdata1421.message.service;
 
public interface OrderService {
 
    void order(String id);
 
}

创建业务层的实现类

并且我们要重写方法

这里就是打印日志 将消息打印在控制台

再写一个业务层接口

一个操作是把要发送短信的ID放到消息队列当中去

另一个操作是从消息队列中取出一个消息然后发送短信

这个核心是消息队列

package com.bigdata1421.message.service;
 
public interface MessageService {
    void sendMessage(String id);
    String doMessage();
}

写这个业务层接口的实现类

package com.bigdata1421.message.service.impl;
 
import com.bigdata1421.message.service.MessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
@Service
public class MessageServiceImpl implements MessageService {
 
    @Override
    public void sendMessage(String id) {
    }
 
    @Override
    public String doMessage() {
        return null;
    }
 
}

这时我们要进行业务层实现类的代码补全

首先在订单中注入消息实现类对象

进行发信息

package com.bigdata1421.message.service.impl;
 
import com.bigdata1421.message.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
@Service
public class OrderServiceImpl implements OrderService {
 
    @Autowired
    private MessageServiceImpl messageService;
 
    @Override
    public void order(String id) {
        //一系列的操作 包括各种服务调用
        //处理各种业务
 
        //短信消息处理
        System.out.println("订单处理开始");
        messageService.sendMessage(id);
        System.out.println("订单处理结束");
 
    }
}

但是我们的业务层实现类的代码不全

即我们刚刚书写的核心

我们还要进行一个补全

作为依赖注入的消息队列的实现类

我们进行补全

消息队列核心逻辑的处理

package com.bigdata1421.message.service.impl;
 
import com.bigdata1421.message.service.MessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.util.ArrayList;
 
@Service
public class MessageServiceImpl implements MessageService {
 
    private ArrayList<String> msgList=new ArrayList<>();
 
    @Override
    public void sendMessage(String id) {
        System.out.println("待发送的短信呼订单已纳入处理队列");
        System.out.println("id:"+id);
        msgList.add(id);
    }
 
    @Override
    public String doMessage() {
        String id = msgList.remove(0);
        System.out.println("已完成短信发送业务");
        System.out.println("id:"+id);
        return id;
    }
 
}

但是我们还要进行测试

我们要书写一个表现层方法

在表现层开发注入业务层对象 OrderService

补全方法

方法就是放入一个消息

package com.bigdata1421.message.controller;
 
import com.bigdata1421.message.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
@RequestMapping("/orders")
public class OrderController {
 
    @Autowired
    private OrderService orderService;
 
    @PostMapping("{id}")
    public void order(@PathVariable String id){
        orderService.order(id);
    }
}

接着我们还要写一个表现层

MessageController

这是做了消息处理

package com.bigdata1421.message.controller;
 
import com.bigdata1421.message.service.MessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
@RequestMapping("/msg")
public class MessageController {
 
    @Autowired
    private MessageService messageService;
 
    @GetMapping
    public String doMessage(){
        String id = messageService.doMessage();
        return id;
    }
}

接下来就是启动测试

我们是基于一个案例的场景执行我们的操作

我们启动postman进行测试

发送post请求

传入id

控制台打印

放入了id

我们再取出来

控制台打印

一取一个

目录
相关文章
|
2月前
|
人工智能 Cloud Native 安全
DeepSeek + Higress AI 网关/Spring AI Alibaba 案例征集
诚挚地感谢每一位持续关注并使用 Higress 和 Spring AI Alibaba 的朋友,DeepSeek + Higress AI 网关/Spring AI Alibaba 案例征集中。
301 22
|
5月前
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
182 4
|
5月前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
162 3
|
6月前
|
程序员
后端|一个分布式锁「失效」的案例分析
小猿最近很苦恼:明明加了分布式锁,为什么并发还是会出问题呢?
80 2
|
5月前
|
Java Maven Spring
Spring 小案例体验创建对象的快感
本文介绍了如何在IDEA中创建一个Spring项目,包括项目创建、配置pom.xml文件以引入必要的依赖、编写实体类HelloSpring及其配置文件applicationContext.xml,最后通过测试类TestHelloSpring展示如何使用Spring的bean创建对象并调用方法。
53 0
|
6月前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
【10月更文挑战第8天】本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
82 5
|
7月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
|
6月前
|
JSON 前端开发 JavaScript
优雅!Spring Boot 3.3 实现职责链模式,轻松应对电商订单流程
本文介绍如何使用 Spring Boot 3.3 实现职责链模式,优化电商订单处理流程。通过将订单处理的各个环节(如库存校验、优惠券核验、支付处理等)封装为独立的处理器,并通过职责链将这些处理器串联起来,实现了代码的解耦和灵活扩展。具体实现包括订单请求类 `OrderRequest`、抽象处理器类 `OrderHandler`、具体处理器实现(如 `OrderValidationHandler`、`VerifyCouponHandler` 等)、以及初始化职责链的配置类 `OrderChainConfig`。
|
6月前
|
存储 前端开发 Java
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
本文介绍了使用Kaptcha插件在SpringBoot项目中实现验证码的生成和验证,包括后端生成验证码、前端展示以及通过session进行验证码校验的完整前后端代码和配置过程。
859 0
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
|
7月前
|
网络协议
keepalived对后端服务器的监测方式实战案例
关于使用keepalived进行后端服务器TCP监测的实战案例,包括配置文件的编辑和keepalived服务的重启,以确保配置生效。
123 1

热门文章

最新文章