当前位置: 首页 > wzjs >正文

正规网站建设空间哪个好鞍山做网站的公司

正规网站建设空间哪个好,鞍山做网站的公司,wordpress好还是自己写好,网站怎么做三级的rabbitmq 可用于解耦、削峰、异步 异步处理 - 相比于传统的串行、并行方式,提高了系统吞吐量。 应用解耦 - 系统间通过消息通信,不用关心其他系统的处理。 流量削锋 - 可以通过消息队列长度控制请求量;可以缓解短时间内的高并发请 求。…
rabbitmq 可用于解耦、削峰、异步
异步处理 - 相比于传统的串行、并行方式,提高了系统吞吐量。
应用解耦 - 系统间通过消息通信,不用关心其他系统的处理。
流量削锋 - 可以通过消息队列长度控制请求量;可以缓解短时间内的高并发请 求。
日志处理 - 解决大量日志传输。
消息通讯 - 消息队列一般都内置了高效的通信机制,因此也可以用在纯的消息通 讯。比如实现点对点消
息队列,或者聊天室等。

在项目中遇到服务间耦合度过高的问题可以使用 RabbitMQ 来解决。

A 系统的代码需要调用 B 系统的接口才能完成一个任务,假设 B 两个系统崩溃了,那么 A 系统就会出现超
时,导致整个系统不可用。如果使用消息队列可以将 A 调用 B 接口的参数放到队列里面, A 代码里面不再
直接去调用 B 系统的接口,而是让 B 系统订阅消费 A 发送过来的的消息(参数), B 系统根据这些消息
(参数)修改自己的逻辑即可, B 系统维护时,不会影响 A 系统的使用。

实现想法

把实际调用的 controller 当作提供者,订单模块开一个监听当作消费者,往通道里传输两个参数 1. 方法
标识(增上改方法) 2. 实际参数(增删改的参数)让消费者调用即可。消息报错处理我认为可以直接丢
弃这个消息,不处理的话报错会循环调用消费。手动应答应该也不需要。

操作代码

导入依赖

都是引用的 common 的core模块,在里面导入就行

业务代码
 

配置操作

给两个模块都加载rabbitmq的配置
先看看提供者 (也就是 yry 服务下的 bill 模块吧)
我新建了一个类用于区分原本的调用
实际代码
看添加方法的注解
package com.ruoyi.yey.bill;
import com.alibaba.fastjson2.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.LinkedHashMap;
/**
* 解耦后的增删改订单操作
*/
@Api(tags = "订单管理")
@RequestMapping("/api/sys/fenBill")
@RestController
public class FenBillController {
@Autowired
private RabbitTemplate rabbitTemplate;
@Autowired
private BillService billService ;
/**
* 测试方法,没有用
*/
@ApiOperation("MQ查询")
@GetMapping("/findAllByPageMQ")
public void findAllByPageMQ() {
BillEntity billEntity = new BillEntity();
billEntity.setId(1);
billEntity.setGoodsId(2222);
billEntity.setGoodsDesc("队列调用商品描述测试");
rabbitTemplate.convertAndSend("bill_queues",
JSON.toJSONString(billEntity));
}
@ApiOperation("添加")
@PostMapping("/add")
public void saveUser(@RequestBody @Validated BillEntity customAdmin) {
LinkedHashMap<Object,Object> map = new LinkedHashMap<>();
map.put("method", 1); //方法表示 添加
map.put("param",customAdmin); //传入参数
//放入通道等待监听消费
rabbitTemplate.convertAndSend("bill_queues", JSON.toJSONString(map));
}
@ApiOperation("修改")
@PostMapping("/edit")
public void editcl(@RequestBody @Validated BillEntity customAdmin) {
LinkedHashMap<Object,Object> map = new LinkedHashMap<>();
map.put("method", 2);
map.put("param",customAdmin);
rabbitTemplate.convertAndSend("bill_queues", JSON.toJSONString(map));
}
@ApiOperation("删除")
@DeleteMapping(value = "/delByIds/{ids}")
public void delByIds(@PathVariable int ids) {
LinkedHashMap<Object,Object> map = new LinkedHashMap<>();
map.put("method", 0);
map.put("param",ids);
rabbitTemplate.convertAndSend("bill_queues", JSON.toJSONString(map));
}
}

 然后看看消费者模块怎么处理的

就是把原本模块给搬过来了主要注意 RabbitConfig BillController 这俩类,其他没啥改动
自己看看代码吧,注解里写的都有。
RabbitConfig
package com.ruoyi.yrybill.config;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
/**
* rabbitmq初始化队列,用于异步解耦
*/
@Configuration
public class RabbitConfig {
@Bean
public Queue limitQueue() {
//设置队列的初始化参数
Map<String, Object> map = new HashMap<String, Object>();
//指定消息队列的长度
map.put("x-max-length", 10);
//当队列满时,多余的消息直接拒绝接收,多余的消息被丢弃
map.put("x-overflow", "reject-publish");
/*
* 参数1:队列的名字
* 参数2:是否为持久队列,及时rabbitmq服务停机,之后在开机该队列也存在 一般队列默认
都是持久的
* 参数3:是否为排他队列,是否只能由自己可见(admin),其他用户看不到该队列
* 参数4:是否在不适用该队列是删除该队列
* 参数5:队列初始化的参数
*/
return new Queue("bill_queues",false,false,false,map);
}
}

 

 BillController
 

package com.ruoyi.yrybill.bill;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.rabbitmq.client.Channel;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.web.controller.BaseController;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.io.IOException;
import java.util.LinkedHashMap;
@Repository
public class BillController extends BaseController {
@Autowired
private BillService billService ;
@RabbitListener(queues = "bill_queues")
public void billListener(Channel channel, Message message,String s) {
try{
//获取队列传入的JSON数据和标识
LinkedHashMap map = JSONObject.parseObject(s, LinkedHashMap.class);
//什么方法
Integer method = (Integer) map.get("method");
//判断一下掉什么方法处理业务,并转换为相应对象
if(1==method){
//参数转换为json
String param = JSON.toJSONString(map.get("param"));
add(JSON.parseObject(param,BillEntity.class));
}
if(0==method){
//数字直接强转了
delByIds((Integer)map.get("param"));
}
if(2==method){
//参数转换为json
String param = JSON.toJSONString(map.get("param"));
editcl(JSON.parseObject(param,BillEntity.class));
}
}catch (Exception e){
//处理失败报错抛弃消息并返回报错信息
try {
channel.basicNack(message.getMessageProperties().getDeliveryTag(),false,false);
throw new ServiceException("操作异常了捏!");
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
}
/**
* 订单添加
* @param customAdmin
*/
public void add(BillEntity customAdmin) {
billService.add(customAdmin);
}
/**
* 订单修改
* @param customAdmin
*/
public void editcl(BillEntity customAdmin) {
billService.edit(customAdmin);
}
/**
* 订单删除
* @param
*/
public void delByIds(int ids) {
billService.delByIds(ids);
}
}

 

http://www.dtcms.com/wzjs/265503.html

相关文章:

  • 网站建设综合实训心得体会淘宝怎么设置关键词搜索
  • 德阳住房和城乡建设厅网站2022年传销最新消息
  • 阿拉丁建站系统当阳seo外包
  • 邯郸网站推广怎么做上海网站排名优化公司
  • 网站建设域名怎么用福建百度代理公司
  • 网站弹窗怎么做网络软件开发
  • 建设网站沙井长沙疫情最新消息
  • java做网站学什么seo排名计费系统
  • 深圳网站设计公司哪家好什么是网络营销策划
  • 邯郸手机网站建设费用郑州最新通告
  • 建设网站费用多少培训
  • 可以看国外网站的dns品牌推广营销
  • 安徽省交通运输厅网站快速网站排名提升工具
  • 赣州网站建设联系方式全网整合营销公司
  • 电子毕业设计代做网站廊坊seo排名扣费
  • 做外汇网站代理赚钱吗行业关键词
  • wordpress管理员文件上海自动seo
  • 莱芜区都市网莱芜杂谈黑帽seo排名技术
  • 东莞网站搜索排名小红书推广费用一般多少
  • 沈阳网站制作聚艺科技品牌营销网站建设
  • 南昌网站建设公司网站建设公司奶茶软文案例300字
  • 哈尔滨建设局网站网站seo搜索引擎优化教程
  • 网站开发的付款方式山西百度查关键词排名
  • 淘宝客网站怎么做推广计划百度账号快速注册入口
  • 域名备案 个人 网站基本信息查询杭州搜索引擎优化公司
  • 做关键词优化需要修改网站标题整站seo定制
  • 省住房和城乡建设厅网站今日头条淄博新闻
  • 网站建设登录结构图营销方式都有哪些
  • 2345网址导航浏览器下载安装谷歌seo是什么
  • 网站推广赚钱吗汕头百度网站排名