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

自己做的旅游网站 介绍seo站长工具 论坛

自己做的旅游网站 介绍,seo站长工具 论坛,如何将网址提交到一些权重比较高的网站,java前端是干嘛的文章目录 RabbitMQ 事务消息概述实现原理代码实现不采用事务采用事务 RabbitMQ 事务消息 概述 RabbitMQ 的 AMQP 协议实现了事务机制,允许开发者保证消息的发送和接收时原子性的,也就是说,要么消息全都发送成功,要么全都发送失败…

文章目录

  • RabbitMQ 事务消息
    • 概述
    • 实现原理
    • 代码实现
      • 不采用事务
      • 采用事务

RabbitMQ 事务消息


概述

RabbitMQ 的 AMQP 协议实现了事务机制,允许开发者保证消息的发送和接收时原子性的,也就是说,要么消息全都发送成功,要么全都发送失败(只与发送方有关).

实现原理

AMQP 事务实现类似于传统数据库事务,允许在一个事务中发送多条消息,并在最后提交或回滚.

  • 事务开始:客户端发送 tx.select 方法,RabbitMQ 开启一个新的事务上下文.
  • 事务内的操作:客户端发送消息 basic.publish,RabbitMQ 将这些消息暂存在内存中,并标记为未提交.
  • 事务提交:客户端发送 tx.commit 方法,RabbitMQ 将所有暂存的消息写入队列,并且如果消息标记为持久化,那么就把消息保存到磁盘.
  • 事务回滚:客户端发送 tx.rollback 方法,RabbitMQ 丢弃所有暂存的消息,不会写入队列.

代码实现

不采用事务

a)配置文件

spring:application:name: rabbitmqrabbitmq:host: env-baseport: 5672username: rootpassword: 1111

b)配置常量

object MQConst {// 事务const val TRANS_QUEUE = "trans.queue"}

c)定义队列

@Configuration
class MQConfig {@Beanfun transQueue() = Queue(MQConst.TRANS_QUEUE)}

d)发送接口
两条消息之间故意触发异常.

@RestController
@RequestMapping("/mq")
class MQApi(val rabbitTemplate: RabbitTemplate,
) {@RequestMapping("/trans-close")fun transClose(): String {rabbitTemplate.convertAndSend("", MQConst.TRANS_QUEUE, "trans msg 1")//触发异常val a = 1 / 0rabbitTemplate.convertAndSend("", MQConst.TRANS_QUEUE, "trans msg 1")return "ok"}}

e)效果如下:
此时队列中只有一条消息,说明消息不具备事务特性.
在这里插入图片描述
在这里插入图片描述

采用事务

a)配置两个 Bean

  1. 由于事务对整个 RabbitTemplate 都会有影响,因此这里重新定义一个 Template bean.
  2. 还需要配置一个 RabbitMQ事务管理器.
@Configuration
class GlobalConfig {@Bean("transRabbitTemplate")fun transRabbitTemplate(connectionFactory: ConnectionFactory): RabbitTemplate {val mq = RabbitTemplate(connectionFactory)mq.isChannelTransacted = true // 开启事务机制return mq}@Beanfun rabbitTransactionManager(connectionFactory: ConnectionFactory): RabbitTransactionManager {return RabbitTransactionManager(connectionFactory)}}

b)如下步骤:

  • 使用新定义的事务 mq bean.
  • 在方法上加上 @Transaction 注解.
@RestController
@RequestMapping("/mq")
class MQApi(val transRabbitTemplate: RabbitTemplate,
) {@Transactional@RequestMapping("/trans-open")fun transOpen(): String {transRabbitTemplate.convertAndSend("", MQConst.TRANS_QUEUE, "trans msg 1")//触发异常val a = 1 / 0transRabbitTemplate.convertAndSend("", MQConst.TRANS_QUEUE, "trans msg 1")return "ok"}}

c)效果演示
在这里插入图片描述

在这里插入图片描述

http://www.ds6.com.cn/news/86022.html

相关文章:

  • 现在哪些做进口商品的电商网站湖南网站网络推广哪家奿
  • 福建省两学一做网站中国互联网协会官网
  • 网站建设和网站开发网站seo综合查询
  • 自动化产品的网站建设互联网营销软件
  • 聚名网备案域名购买南宁百度seo优化
  • net网络网站建设seo关键词排名优化软件怎么选
  • 电商网站建设毕业设计百度网页版登录入口官网
  • 给人做网站广州灰色优化网络公司
  • 广州本地网站百度快照优化培训班
  • 广汉有没有做网站建设公司百度下载app下载
  • 达州做网站的公司有哪些品牌网络推广怎么做
  • 百度对wordpress优化深圳seo
  • 北京个人网站建设音乐接单推广app平台
  • 丽江网站建设c3sales推广关键词排名
  • wordpress无法复制文件余姚网站seo运营
  • 外网访问wordpress全站路径设置优化关键词步骤
  • 揭阳专业做网站公司免费网站推广2023
  • 网站制作公司 佛山seo优化一般包括哪些
  • 网站建设报价单格式seo关键词怎么填
  • 广东新闻联播今天超级推荐的关键词怎么优化
  • 企业网站直销例子建网站的步骤
  • 深圳做网站最好的公司百度站长管理平台
  • 东莞做网站企业铭seo关键词推广怎么做
  • 做网站建设的怎么拓展业务西安新站网站推广优化
  • github搭建网站买域名
  • 顺德网站建设策划近几天发生的新闻大事
  • wordpress多站点搭建怎么宣传网站
  • wordpress结构化标签seo工具在线访问
  • 佛山网站建设设计公司哪家好上海百度推广排名
  • 梵克雅宝四叶草手链seo教育培训机构