学做蛋糕什么网站,大学生软件开发项目推荐,建设校园网站的必要性,微信企业官方网站怎么做基本概念
消息队列三个场景#xff1a;异步#xff0c;削峰#xff0c;解耦
异步#xff1a;将整个流程进行异步发送#xff0c;也就是说本来顺序执行的程序化流程#xff0c;异步后可以同时进行操作#xff0c;互不影响#xff0c;但保持最终结果一致性#xff1b;…基本概念
消息队列三个场景异步削峰解耦
异步将整个流程进行异步发送也就是说本来顺序执行的程序化流程异步后可以同时进行操作互不影响但保持最终结果一致性
解耦它允许不同的应用程序或服务通过发送和接收消息进行通信而不是直接相互调用通过消息中间件监控一方是否成功后其他系统依据需求直接订阅即可
削峰大量的请求放到队列中能消费多少依据服务器的处理能力保证服务器稳定不挂机
消息中间件缺点
1.系统复杂性多个系统会考虑更多东西重复消息消息丢失消息的顺序
2.数据一致性采用分布式事务分为编程式事务和分布式事务
// 获取事务管理器
PlatformTransactionManager txManager new DataSourceTransactionManager(dataSource);
// 定义事务定义
DefaultTransactionDefinition txDefinition new DefaultTransactionDefinition();
// 开启事务
TransactionStatus txStatus txManager.getTransaction(txDefinition);try {// 执行业务逻辑// ...// 提交事务txManager.commit(txStatus);
} catch (Exception e) {// 回滚事务txManager.rollback(txStatus);throw e;
}
Service
Transactional
public class OrderService {PersistenceContextprivate EntityManager entityManager;Transactional(rollbackFor Exception.class)public void createOrder(Order order) {// 执行业务逻辑entityManager.persist(order);}
}
可用性技术选型金融公司目前使用的是RabbitMQKafka的组合方式