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

专做网站漏扫的工具班级优化大师使用指南

专做网站漏扫的工具,班级优化大师使用指南,做网站设计收入,公司产品推广文案文章目录 前言事务配置事务管理器加上Transactional注解 前言 前面我们学习了 RabbitMQ 的延迟队列,通过延迟队列可以实现生产者生产的消息不是立即被消费者消费。那么这篇文章我们将来学习 RabbitMQ 的事务。 事务 RabbitMQ 是基于 AMQP 协议实现的,…

在这里插入图片描述

文章目录

  • 前言
  • 事务
    • 配置事务管理器
    • 加上@Transactional注解

前言

前面我们学习了 RabbitMQ 的延迟队列,通过延迟队列可以实现生产者生产的消息不是立即被消费者消费。那么这篇文章我们将来学习 RabbitMQ 的事务。

事务

RabbitMQ 是基于 AMQP 协议实现的,该协议实现了事务机制,因此 RabbitMQ 也支持事务机制。Spring AMQP 也提供了对事务相关的操作。RabbitMQ 事务允许开发者确保消息的发送和接收是原子性的,要么全部成功,要么全部失败。然而,需要明确的是,RabbitMQ 的事务支持主要集中在生产者(发送方)端,并且它可能不是处理高并发场景下的最佳实践,因为使用事务会增加消息发送的延迟和复杂性。

那么我们来看看在 Spring 中如何实现 RabbitMQ 事务。

先来看看在没有事务的情况下是否能够保证消息发送的原子性:

public static final String TRANS_EXCHANGE = "trans.exchange";
public static final String TRANS_QUEUE = "trans.queue";

声明交换机、队列和绑定关系:

@Configuration
public class TransConfig {@Bean("transExchange")public Exchange transExchange() {return ExchangeBuilder.directExchange(Constants.TRANS_EXCHANGE).build();}@Bean("transQueue")public Queue transQueue() {return QueueBuilder.durable(Constants.TRANS_QUEUE).build();}@Bean("transBinding")public Binding transBinding(@Qualifier("transExchange") Exchange exchange, @Qualifier("transQueue") Queue queue) {return BindingBuilder.bind(queue).to(exchange).with("trans").noargs();}
}

消费者代码:

@RequestMapping("/trans")
public String trans() {rabbitTemplate.convertAndSend(Constants.TRANS_EXCHANGE,"trans","rabbitmq trans1");//制造异常int ret = 3/0;rabbitTemplate.convertAndSend(Constants.TRANS_EXCHANGE,"trans","rabbitmq trans2");return "消息发送成功";
}

这里就不指定消费者了,只是看看事务的效果。

在这里插入图片描述
观察队列的情况:

在这里插入图片描述
可以发现此时消息的发送是不具备原子性的,所以我们就使用事务保证消息的原子性。

配置事务管理器

@Configuration
public class TransConfig {@Bean("transactionManager")public RabbitTransactionManager transactionManager(ConnectionFactory factory) {return new RabbitTransactionManager(factory);}@Bean("transactionRabbitTemplate")public RabbitTemplate transactionRabbitTemplate(ConnectionFactory factory) {RabbitTemplate rabbitTemplate = new RabbitTemplate(factory);rabbitTemplate.setChannelTransacted(true);return rabbitTemplate;}
}

加上@Transactional注解

配置完成事务管理器之后,我们需要在需要开启事务的方法上加上 @Transactional 注解:

@RequestMapping("producer")
@RestController
public class ProducerController {@Autowiredprivate RabbitTemplate rabbitTemplate;@Resource(name = "transactionRabbitTemplate")private RabbitTemplate transactionRabbitTemplate;@Transactional@RequestMapping("/trans")public String trans() {transactionRabbitTemplate.convertAndSend(Constants.TRANS_EXCHANGE,"trans","rabbitmq trans1");//制造异常int ret = 3/0;transactionRabbitTemplate.convertAndSend(Constants.TRANS_EXCHANGE,"trans","rabbitmq trans2");return "消息发送成功";}
}

在这里插入图片描述
上面就是 RabbitMQ 事务的使用。

http://www.tj-hxxt.cn/news/73467.html

相关文章:

  • 微信网站模板免费下载cnn头条新闻
  • 服装批发网站怎么在网上销售
  • 山西省两学一做网站高级搜索指令
  • wordpress多网站整合在一个后台橘子seo查询
  • 如何在个人电脑用源码做网站哪里可以学网络运营和推广
  • wdcp备份网站今日新闻简讯30条
  • 有的网站在浏览器打不开怎么办如何做好宣传推广
  • 做视频网站 许可证东莞营销网站建设优化
  • 太原网站制作维护品牌推广方式有哪些
  • 网站建设与网页制作实训报告武汉做seo公司
  • 怎么注册公司名字和商标深圳网站搜索优化工具
  • 河南省网站建设搜狗站长平台打不开
  • 南京网站设南京网站设计计新媒体营销方式有几种
  • 公司网站设计制作开发方案英语seo什么意思
  • 一起合伙做项目的网站免费软件下载网站有哪些
  • 怎么在公司网站做超链接培训心得体会模板
  • 做其他国家语言网站微信广告投放推广平台多少费用
  • b2c模式的服务内容一站传媒seo优化
  • 只做健康产品的网站免费网页在线客服系统代码
  • 编程除了做网站还能干什么徐州seo企业
  • 制作一个网站步骤全网整合营销
  • 淄博周村网站建设报价重庆百度推广
  • 最新的网站建设软件有哪些电工培训技术学校
  • wordpress点餐系统广州seo网站优化培训
  • 网站建设的审批360搜索引擎推广
  • 潍坊市网站建设公司windows优化大师怎么下载
  • 个人网站如何提高访问量企业网站页面设计
  • 企业网站设计制作收费给企业做网站的公司
  • wordpress自定义全局变量广州seo排名收费
  • 哈尔滨做网站建设广告网站