消息队列案例
首先我们书写一个业务层接口
定义的是发送消息
短信消息处理
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
我们再取出来
控制台打印
一取一个
个人号推广
博客主页
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