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

我们再取出来

控制台打印

一取一个

目录
相关文章
|
19天前
|
缓存 Java 开发工具
Spring是如何解决循环依赖的?从底层源码入手,详细解读Spring框架的三级缓存
三级缓存是Spring框架里,一个经典的技术点,它很好地解决了循环依赖的问题,也是很多面试中会被问到的问题,本文从源码入手,详细剖析Spring三级缓存的来龙去脉。
Spring是如何解决循环依赖的?从底层源码入手,详细解读Spring框架的三级缓存
|
19天前
|
缓存 安全 Java
Spring框架中Bean是如何加载的?从底层源码入手,详细解读Bean的创建流程
从底层源码入手,通过代码示例,追踪AnnotationConfigApplicationContext加载配置类、启动Spring容器的整个流程,并对IOC、BeanDefinition、PostProcesser等相关概念进行解释
Spring框架中Bean是如何加载的?从底层源码入手,详细解读Bean的创建流程
|
9天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
527 6
|
7天前
|
XML 前端开发 Java
控制spring框架注解介绍
控制spring框架注解介绍
|
7天前
|
存储 NoSQL Java
Spring Session框架
Spring Session 是一个用于在分布式环境中管理会话的框架,旨在解决传统基于 Servlet 容器的会话管理在集群和云环境中的局限性。它通过将用户会话数据存储在外部介质(如数据库或 Redis)中,实现了会话数据的跨服务器共享,提高了应用的可扩展性和性能。Spring Session 提供了无缝集成 Spring 框架的 API,支持会话过期策略、并发控制等功能,使开发者能够轻松实现高可用的会话管理。
Spring Session框架
|
14天前
|
缓存 监控 JavaScript
构建高效后端服务:Node.js与Express框架的完美结合
【9月更文挑战第18天】在数字化时代的浪潮中,后端服务的效率和稳定性成为了企业竞争力的关键。本文将深入探讨如何使用Node.js和Express框架来构建一个既高效又稳定的后端服务,同时通过实际代码示例,展示如何优化性能并确保服务的高可用性。
|
14天前
|
Java 应用服务中间件 开发者
深入探索并实践Spring Boot框架
深入探索并实践Spring Boot框架
25 2
|
14天前
|
机器学习/深度学习 数据采集 JavaScript
ADR智能监测系统源码,系统采用Java开发,基于SpringBoot框架,前端使用Vue,可自动预警药品不良反应
ADR药品不良反应监测系统是一款智能化工具,用于监测和分析药品不良反应。该系统通过收集和分析病历、处方及实验室数据,快速识别潜在不良反应,提升用药安全性。系统采用Java开发,基于SpringBoot框架,前端使用Vue,具备数据采集、清洗、分析等功能模块,并能生成监测报告辅助医务人员决策。通过集成多种数据源并运用机器学习算法,系统可自动预警药品不良反应,有效减少药害事故,保障公众健康。
ADR智能监测系统源码,系统采用Java开发,基于SpringBoot框架,前端使用Vue,可自动预警药品不良反应
|
6天前
|
Web App开发 缓存 JavaScript
深入浅出Node.js后端开发
【9月更文挑战第26天】本文将引导你了解Node.js的基本原理,并通过实际案例展示如何在后端开发中应用它。我们将从Node.js的核心概念讲起,逐步深入到构建一个完整的后端服务,最后探讨如何优化你的Node.js应用。准备好让你的开发技能更上一层楼了吗?让我们一起潜入Node.js的世界!
|
9天前
|
设计模式 算法 搜索推荐
后端开发中的设计模式应用
在软件开发的浩瀚海洋中,设计模式犹如一座座灯塔,为后端开发者指引方向。本文将深入探讨后端开发中常见的设计模式,并通过实例展示如何在实际项目中巧妙应用这些模式,以提升代码的可维护性、扩展性和复用性。通过阅读本文,您将能够更加自信地应对复杂后端系统的设计与实现挑战。
32 3
下一篇
无影云桌面