首页 > 其他分享 >后端开发Spring框架之消息 消息队列案例--订单短信通知

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

时间:2024-06-23 18:59:04浏览次数:23  
标签:String -- Spring springframework public 消息 import org id

消息队列案例

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

定义的是发送消息

短信消息处理

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

我们再取出来

控制台打印

一取一个

个人号推广

博客主页

多多!-CSDN博客

Web后端开发

https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482

Web前端开发

https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482

数据库开发

https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482

项目实战

https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482

算法与数据结构

https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482

计算机基础

https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482

回忆录

https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482

标签:String,--,Spring,springframework,public,消息,import,org,id
From: https://blog.csdn.net/qq_30500575/article/details/139904327

相关文章

  • 2024.06.07校招 实习 内推 面经
    绿*泡*泡VX:neituijunsir  交流*裙,内推/实习/校招汇总表格1、提前批|上汽通用五菱2024提前批暨暑期实习菱云少年夏令营启动!提前批|上汽通用五菱2024提前批暨暑期实习菱云少年夏令营启动!2、实习|索尼在华2024实习生招募开启,邀你投递简历!实习|索尼在华2024实......
  • C++11 标准库头文件模拟实现
    系列文章目录文章目录系列文章目录前言●智能指针模板●Vector1.简单版本2.X总结前言暂不考虑支持多线程常用STL的简单实现,主要内容百行左右完成,意在理解STL的原理●智能指针模板SharedPtr#include<assert.h>#include<atomic>template<classT......
  • KaTeX 支持测试
    !https://zhuanlan.zhihu.com/p/695235678KaTeX支持测试来源:https://katex.org/docs/supported.htmlhttps://github.com/KaTeX/KaTeX/blob/main/docs/supported.md在vscode上,大部分函数都支持。下面是测试结果$$M_{\mathrm{cg}}=\underbrace{M_{\mathrm{f}}}{\text{......
  • python数据分析
    数据可视化基础定义与目的定义1.数据可视化是将数据以图形或图像的形式展示出来的过程2.目的是帮助人们更直观地理解、分析和解释数据目的1.揭示数据中的模式、趋势和关联2.辅助决策制定和问题解决3.增进数据沟通和交流数据可视化类型matplotlib库实现简单数据可视化......
  • Postman接口测试工具详解
    一、引言在现代软件开发和测试流程中,接口测试占据了举足轻重的地位。接口作为系统与系统之间、模块与模块之间数据交互的桥梁,其稳定性和可靠性直接关系到整个系统的性能和用户体验。Postman作为一款强大的接口测试工具,凭借其简单易用、功能丰富等特点,深受开发者和测试人员......
  • 一个使用Python和假设的天气API来获取和展示天气数据的简单脚本示例
    要使用Python编写一个天气预测的脚本,我们通常需要依赖于现有的天气API来获取实时或历史天气数据,并且结合机器学习或统计模型来进行预测。然而,由于天气预测是一个复杂的任务,通常需要大量的计算资源和专业的气象知识,这里我们将简化这个过程,只展示如何使用Python和一个假设的天......
  • 【永磁同步电机PMSM直接转矩控制(DTC)Simulink仿真】
    文章目录前言一、直接转矩控制(DTC)是什么?二、三相PMSM传统的DTC框图三、Simulink仿真模型搭建前言本章首先介绍永磁同步电机传统直接转矩控制(DirectTorqueControl,DTC)的基本工作原理和实现方法,然后搭建仿真模型并给出仿真结果。后续为了改善传统DTC存在的缺......
  • C语言中操作符详解(二)
    OK,今天继续为诸君带来有关C语言中操作符的讲解一.位操作符 C语言中的位操作符我相信大家并不陌生,我们在之前就已经接触过了一些位操作符(位操作符的操作数只能是整数):(1)&:按位与(同为1才为1,否则为0)(2)| :按位或(有1就为1)(3)^:按位异或(不同为1,否则为0)(4)~:按位......
  • [MYSQL] 数据库基础
    1.什么是数据库从数据库的名字可以看出,它是用来操作(增删查改....)数据的,事实上也的确如此,通过数据库,我们可以更方便.更高效的来操作.管理数据以文件形式存储数据的缺点文件的安全问题文件不利于数据的查询和删除文件不利于存储海量数据操作文件并不方便为了解决上述......
  • Postman的安装与使用教程
    一、引言Postman是一款强大的API开发协作工具,它可以帮助开发人员轻松地进行API测试、构建和文档化。无论是初学者还是经验丰富的开发人员,都可以利用Postman来提高工作效率。本教程将详细介绍Postman的安装和使用方法,帮助读者快速上手。二、Postman的安装访问Postman官方网站......