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

网页设计网站费用重庆承越网站建设公司

网页设计网站费用,重庆承越网站建设公司,自己可以做网站推广吗,开原网站制作如何在Spring Boot中集成RabbitMQ 在现代微服务架构中#xff0c;消息队列#xff08;如RabbitMQ#xff09;扮演了关键的角色#xff0c;它不仅能够提供高效的消息传递机制#xff0c;还能解耦服务间的通信。本文将介绍如何在Spring Boot项目中集成RabbitMQ#xff0c;…如何在Spring Boot中集成RabbitMQ 在现代微服务架构中消息队列如RabbitMQ扮演了关键的角色它不仅能够提供高效的消息传递机制还能解耦服务间的通信。本文将介绍如何在Spring Boot项目中集成RabbitMQ实现生产者和消费者的基本配置。 步骤1添加Maven依赖 首先在你的Spring Boot项目的pom.xml中添加spring-boot-starter-amqp依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-amqp/artifactId /dependency这个starter包含了与RabbitMQ集成所需的所有基本依赖。 步骤2配置RabbitMQ 在application.yml或application.properties中配置RabbitMQ的连接信息 spring:rabbitmq:host: 10.5.2.27port: 30700username: userpassword: Sungrow2023步骤3实现生产者 在Spring Boot中发送消息到RabbitMQ的生产者可以很简单地通过RabbitTemplate实现 import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.web.bind.annotation.*; import com.alibaba.fastjson.JSONObject;RestController RequestMapping(/menu) public class MenuController {Resourceprivate RabbitTemplate rabbitTemplate;PostMapping(/add)public ResultSysPermission add(RequestBody SysPermission permission) {// ... 添加菜单的业务逻辑rabbitTemplate.convertAndSend(RabbitConstant.GOODS_EXCHANGE, RabbitConstant.MENU_MESSAGE, JSONObject.toJSONString(permission));return new ResultSysPermission().success(添加成功);} }这里convertAndSend方法用于发送消息到指定的交换机和路由键。 步骤4配置RabbitMQ交换机、队列和绑定 在Spring Boot中可以通过配置类来定义交换机、队列和它们之间的绑定关系 import org.springframework.amqp.core.*; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class RabbitMQConfig {// 定义交换机、队列、路由键等常量// ... Beanpublic Queue queueA() {return new Queue(GOODS_QUEUE_A, true);}BeanTopicExchange myExchange() {return new TopicExchange(GOODS_EXCHANGE);}BeanBinding bindingA(Queue queueA, TopicExchange exchange) {return BindingBuilder.bind(queueA).to(exchange).with(GOODS_APP_ROUTING);}// 其他队列和绑定的定义// ... }这段代码定义了队列、交换机并将它们通过路由键绑定起来。 有了配置后启动服务可以在rabbitmq控制台看到该交换机队列以及他们之间的绑定 点进去后可以看到绑定的队列 如果点进来没有显示这个绑定队列就说明配置的不对后续也无法消费点进队列后就会显示队列中的消息了 步骤5实现消费者 消费者用于处理接收到的消息。使用RabbitListener注解可以很容易地实现 import org.springframework.amqp.rabbit.annotation.RabbitListener;Component public class MessageReceiver {RabbitListener(bindings QueueBinding(value Queue(name RabbitMQConfig.GOODS_QUEUE_A),exchange Exchange(name RabbitMQConfig.GOODS_EXCHANGE, type ExchangeTypes.TOPIC),key RabbitMQConfig.GOODS_APP_ROUTING))public void receiveAppMessage(Message message, Channel channel) {// 处理接收到的消息// ...}// 其他消费者方法// ... }这里RabbitListener注解定义了消息的监听和处理逻辑。 步骤6处理死信队列 配置死信队列 Bean public Queue deadQueue() {MapString, Object args new HashMap();args.put(x-dead-letter-exchange, DEAD_EXCHANGE_A);args.put(x-dead-letter-routing-key, DEAD_ROUTING_KEY_A);return new Queue(DEAD_QUEUE_A, true, false, false, args); }Bean DirectExchange deadExchange() {return new DirectExchange(DEAD_EXCHANGE_A, true, false); }Bean Binding bindingDead(Queue deadQueue, DirectExchange deadExchange) {return BindingBuilder.bind(deadQueue).to(deadExchange).with(DEAD_ROUTING_KEY_A); }在RabbitMQ中死信队列Dead Letter Queue, DLQ用于存储无法正常处理的消息。消息可能由于几种原因被发送到死信队列包括 消息被拒绝Basic.Reject/Basic.Nack当消费者明确拒绝消息且不重新排队时通过设置requeue为false消息会进入死信队列。 消息过期如果消息在队列中存活时间超过设定的TTLTime-To-Live它会被自动发送到死信队列。 队列达到最大长度如果队列设置了最大长度并达到这个限制最老的消息可能会被移动到死信队列。 在Spring Boot集成的RabbitMQ应用中通常会在消费者处理消息时发生异常的情况下明确地将消息发送到死信队列。例如 RabbitListener(bindings QueueBinding(value Queue(name RabbitMQConfig.GOODS_QUEUE_A),exchange Exchange(name RabbitMQConfig.GOODS_EXCHANGE, type ExchangeTypes.TOPIC),key RabbitMQConfig.GOODS_APP_ROUTING )) public void receiveAppMessage(Message message, Channel channel) throws IOException {try {// 处理消息} catch (Exception e) {// 处理消息失败拒绝消息并不重新排队channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, false);// 将消息发送到死信队列rabbitTemplate.convertAndSend(RabbitMQConfig.DEAD_EXCHANGE_A, RabbitMQConfig.DEAD_ROUTING_KEY_A, message);} }在这个例子中如果在处理消息的过程中发生异常消息会被明确地拒绝并发送到配置的死信队列。 为什么使用死信队列 避免消息丢失死信队列确保无法处理的消息不会被丢失而是存储在一个特定的地方供进一步的检查和处理。 分析和调试可以对死信队列中的消息进行分析以确定为什么消息不能被正常处理。 避免重复处理无效消息通过将无法处理的消息移动到死信队列防止消费者重复尝试处理同一消息这可能导致无限循环。 死信队列DLQ用于处理无法正常消费的消息。配置死信队列类似于配置普通队列但需要一些额外的参数如TTLTime-To-Live和死信交换机
http://www.hkea.cn/news/14358513/

相关文章:

  • 做旅游网站怎么样忘记wordpress
  • 企业网站备案系统随州网站seo多少钱
  • 做调查赚钱的网站有哪些网站内链分析
  • 专业的家居网站建设江苏金安建设公司网站
  • 手机免费建设网站搜狗优化排名
  • 东莞网站设计定制开发网站弹出信息怎么做
  • 做响应式的网站有哪些凡客软件下载
  • 宁至网站建设wordpress下载主题需要ftp
  • 培训的网站建设东莞外贸推广公司
  • 重庆八大员证书查询网站模板下载后怎么使用
  • 做网站相册奢侈品
  • 厦门网站建设模拟网络营销的理论基础有哪些
  • 苏州百度搜索排名优化关键词排名优化易下拉效率
  • 计算机网站建设和维护做网站编辑有人带吗
  • 怎么利用网站做兼职好的网站开发培训
  • 中建集团官网百度seo代理
  • 南通高端网站建设机构网站基础内容
  • 汝州住房和城乡建设网站网址域名ip解析
  • 兰州起点网站建设公司中国建设银行官方网站k宝驱动
  • 网站域名申请费用推广广告赚钱软件
  • wp网站开发广州建站外贸网站
  • 做网站 挣广告联盟的佣金咸阳网站开发哪家好
  • centos 下载wordpressseo搜索引擎优化总结报告
  • 无法访问网站建站平台 在线提交表格
  • 06627网页制作和网站建设网站代码 如何做层级关系
  • 监控网站建设需要多少钱网络设计师学什么专业
  • 北京做网站哪家便宜网站排名优化化快排优化
  • 企业做网站大概多少钱工商企业信息查询公示系统
  • 做网站设计需要哪些软件网站开发预算报表
  • 望牛墩镇网站建设公司外贸网站模板免费