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

app 网站开发公司济南seo整站优化招商电话

app 网站开发公司,济南seo整站优化招商电话,只做硬件网站,文化馆建设网站1. 问题背景 假设有一个订单服务系统,当用户提交订单后,系统会根据订单信息生成订单,并在订单生成成功后,自动发送邮件提醒用户。为了实现这一过程,系统通常会按照以下顺序同步(从上往下)执行: 用户提交订…

1. 问题背景

假设有一个订单服务系统,当用户提交订单后,系统会根据订单信息生成订单,并在订单生成成功后,自动发送邮件提醒用户。为了实现这一过程,系统通常会按照以下顺序同步(从上往下)执行:

用户提交订单。

订单生成成功。

邮件发送成功。

用户收到反馈。

1.1 问题描述

这个同步执行的流程可能带来一些性能和用户体验上的问题。特别是在邮件发送的过程可能会存在一定的延迟,而订单服务又依赖于该过程的成功完成来反馈结果给用户。举个例子,如果有十个用户都生成订单,但是服务器每次只能发3封邮件,那就有7个用户要干等着,这样不仅可能导致响应时间变长,还可能影响系统的可扩展性。

1.2 问题解决

当我们引入了了rabbitMQ,我们就可以将要发邮件做一个任务清单(消息队列),在订单生成以后就返回用户成功了,然后把要发的邮件放入消息队列,然后让服务器慢慢从消息队列里面一条一条数据读,一个邮件一个邮件的发就好了。

在专业的名词解释里面,用户被成为生产者,处理用户请求的服务器被称为消费者,而rabbit所提供的功能就是存储消息队列(任务清单)并且作为交换机连接用户和服务器,如下图

image.png

2. 示例代码

RabbitConfig.java

@Configuration
public class RabbitConfig {@Beanpublic TopicExchange mainExchange() {return new TopicExchange("mainExchange");}@Beanpublic Queue orderQueue() {return new Queue("orderQueue");}@Beanpublic Queue emailQueue() {return new Queue("emailQueue");}@Beanpublic Binding orderBinding(Queue orderQueue, TopicExchange mainExchange) {return BindingBuilder.bind(orderQueue).to(mainExchange).with("order");}@Beanpublic Binding emailBinding(Queue emailQueue, TopicExchange mainExchange) {return BindingBuilder.bind(emailQueue).to(mainExchange).with("email");}
}

MessageSender.java

@Service
public class MessageSender {@Autowiredprivate RabbitTemplate rabbitTemplate;// 发送订单消息public void sendOrderMessage(String message) {rabbitTemplate.convertAndSend("mainExchange", "order", message);}// 发送邮件消息public void sendEmailMessage(String message) {rabbitTemplate.convertAndSend("mainExchange", "email", message);}
}

MessageController.java

@RestController
@RequestMapping("/mq")
public class MessageController {@Autowiredprivate MessageSender sender;// 发送订单消息@GetMapping("/sendOrder")public String sendOrder() {sender.sendOrderMessage("用户下了一个订单!");return "订单消息已发送";}// 发送邮件消息@GetMapping("/sendEmail")public String sendEmail() {sender.sendEmailMessage("发送确认邮件给用户");return "邮件消息已发送";}
}

MessageConsumer.java

@Service
public class MessageConsumer {@RabbitListener(queues = "orderQueue")public void handleOrder(String msg) {System.out.println("📦 订单处理:" + msg);}@RabbitListener(queues = "emailQueue")public void handleEmail(String msg) {System.out.println("📧 邮件处理:" + msg);}
}

application.yml

spring:rabbitmq:host: localhostport: 5672username: guestpassword: guest

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

相关文章:

  • wordpress的语言谷歌优化的网络公司
  • 做郑州的购物网站用什么名seo快速排名软件app
  • 网站图片怎么做白色背景搜索引擎营销案例有哪些
  • 做一个购物网站要多少钱大数据统计网站
  • 动态网站设计与开发超能搜索引擎系统网站
  • 湖北省建设工程信息网seo基础知识包括什么
  • 广州市11个区地图百度关键词排名优化工具
  • 网站的关键词库怎么做大连百度网站排名优化
  • wordpress 问答插件长沙哪里有网站推广优化
  • 自己做的网站打开太慢软文案例大全
  • 东莞网站建设设计推广方案经典范文
  • 给网站做伪静态成都最新消息今天
  • 网站建设的费用seo推广 课程
  • 定制 网站常见网络营销推广方法
  • 专做banner的网站北京十大营销策划公司
  • 天津网站制作首页在线咨询8大营销工具
  • 如何创建个人博客网站销售课程培训视频教程
  • 网站的风格设计有哪些保定网站建设报价
  • 网页与制作百度seo营销推广
  • 手机网站后台模板磁力搜索器kitty
  • h5开发网站优点正能量网站地址链接免费
  • 网站开发与维护的内容网站建设明细报价表
  • 西部数码虚拟主机怎么做网站百度网站提交了多久收录
  • 上海做网站吧企业微信scrm
  • 网站更新提示怎末做持啊传媒企业推广
  • 网站建设多少钱明细如何免费引流推广
  • 网站建设管理考核办法什么是搜索引擎优化的核心
  • 管理咨询网站解释seo网站推广
  • 哈尔滨网站建设服务公司网络推广的渠道和方式有哪些
  • 挂机宝做网站可以吗市场营销推广方案怎么做