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

网站建设经验介绍龙岩网站制作多少钱

网站建设经验介绍,龙岩网站制作多少钱,安卓app下载,万能网页视频下载分布式中间件:RabbitMQ确认消费机制 在分布式系统中,消息队列是实现异步通信和系统解耦的重要组件。RabbitMQ 作为一款功能强大的消息队列中间件,提供了丰富的特性来保证消息的可靠传输和消费。其中,确认消费机制是确保消息被正确…

分布式中间件:RabbitMQ确认消费机制

在分布式系统中,消息队列是实现异步通信和系统解耦的重要组件。RabbitMQ 作为一款功能强大的消息队列中间件,提供了丰富的特性来保证消息的可靠传输和消费。其中,确认消费机制是确保消息被正确处理的关键环节。本文将深入探讨 RabbitMQ 的确认消费机制,并给出不同场景下的配置示例。

确认消费机制概述

RabbitMQ 的确认消费机制主要涉及两个方面:生产者消息确认和消费者消息确认。生产者消息确认用于确保消息成功发送到 RabbitMQ 服务器,而消费者消息确认则用于确保消息被消费者正确处理。

消费者确认模式

RabbitMQ 提供了三种消费者确认模式:

  1. AcknowledgeMode.AUTO:自动确认模式。当消费者接收到消息后,RabbitMQ 会自动将消息标记为已消费,无论消费者是否成功处理该消息。这种模式简单方便,但可能会导致消息丢失,因为如果消费者在处理消息时出现异常,消息已经被确认,无法再次处理。
  2. AcknowledgeMode.MANUAL:手动确认模式。消费者需要显式地调用 channel.basicAck() 方法来确认消息已经被成功处理,或者调用 channel.basicNack()channel.basicReject() 方法来拒绝消息。这种模式可以确保消息不会丢失,但需要开发者手动处理确认逻辑。
  3. AcknowledgeMode.NONE:无确认模式。RabbitMQ 不会等待消费者的确认,一旦消息被发送给消费者,就会将其标记为已消费。这种模式适用于对消息可靠性要求不高的场景。

配置示例

单一消费者实例配置

import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RabbitMQConfig {private final ConnectionFactory connectionFactory;public RabbitMQConfig(ConnectionFactory connectionFactory) {this.connectionFactory = connectionFactory;}@Bean("singleListenerContainer")public SimpleRabbitListenerContainerFactory singleListenerContainer() {// 创建一个监听容器工厂SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();// 设置连接工厂factory.setConnectionFactory(connectionFactory);// 设置消息转换器factory.setMessageConverter(new Jackson2JsonMessageConverter());// 设置并发消费factory.setConcurrentConsumers(1);// 设置最大并发消费factory.setMaxConcurrentConsumers(1);// 设置最大单条消费消息factory.setPrefetchCount(1);return factory;}
}

在这个配置中,我们创建了一个单一消费者实例的监听容器工厂。通过设置 ConcurrentConsumersMaxConcurrentConsumers 为 1,确保只有一个消费者实例在处理消息。PrefetchCount 设置为 1,表示消费者一次只从队列中获取一条消息,保证消息的顺序处理。

多个消费者实例配置

import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
import org.springframework.amqp.support.AcknowledgeMode;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RabbitMQConfig {private final ConnectionFactory connectionFactory;public RabbitMQConfig(ConnectionFactory connectionFactory) {this.connectionFactory = connectionFactory;}@Bean("multiListenerContainer")public SimpleRabbitListenerContainerFactory multiListenerContainer() {// 创建一个监听容器工厂SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();// 设置连接工厂factory.setConnectionFactory(connectionFactory);// 设置消息转换器factory.setMessageConverter(new Jackson2JsonMessageConverter());// 设置手动提交factory.setAcknowledgeMode(AcknowledgeMode.MANUAL);// 设置并发消费factory.setConcurrentConsumers(10);// 设置最大并发消费factory.setMaxConcurrentConsumers(20);// 设置最大单条消费消息factory.setPrefetchCount(10);return factory;}
}

在多个消费者实例的配置中,我们将 ConcurrentConsumers 设置为 10,MaxConcurrentConsumers 设置为 20,表示初始有 10 个消费者实例,最多可以扩展到 20 个。PrefetchCount 设置为 10,允许每个消费者一次从队列中获取 10 条消息,提高消费效率。同时,我们将确认模式设置为 AcknowledgeMode.MANUAL,需要开发者手动处理消息确认。

自定义 RabbitMQ 发送消息组件

import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RabbitMQConfig {private final ConnectionFactory connectionFactory;public RabbitMQConfig(ConnectionFactory connectionFactory) {this.connectionFactory = connectionFactory;}@Beanpublic RabbitTemplate rabbitTemplate() {// 设置消息发送确认connectionFactory.setPublisherConfirms(true);// 设置消息发送返回connectionFactory.setPublisherReturns(true);// 创建 rabbitTemplateRabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);// 设置消息发送确认回调rabbitTemplate.setMandatory(true);// 设置消息发送确认回调rabbitTemplate.setConfirmCallback((correlationData, ack, cause) -> {if (ack) {System.out.println("消息发送成功");} else {System.out.println("消息发送失败:" + cause + correlationData.toString());}});// 设置消息发送返回回调rabbitTemplate.setReturnCallback((message, replyCode, replyText, exchange, routingKey) -> {System.out.println("消息丢失:exchange:" + exchange + ",route:" + routingKey + ",replyCode:" + replyCode + ",replyText:" + replyText);});// 设置消息转换器rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter());return rabbitTemplate;}
}

在这个配置中,我们自定义了一个 RabbitTemplate 用于发送消息。通过设置 PublisherConfirmsPublisherReturnstrue,开启生产者消息确认和返回机制。ConfirmCallback 用于处理消息发送确认结果,ReturnCallback 用于处理消息无法路由到队列的情况。

总结

RabbitMQ 的确认消费机制为分布式系统中的消息传递提供了可靠的保障。通过合理配置生产者和消费者的确认模式,可以确保消息的可靠发送和消费。在实际应用中,需要根据业务需求选择合适的确认模式,并处理好异常情况,以保证系统的稳定性和可靠性。

希望本文能帮助你更好地理解和使用 RabbitMQ 的确认消费机制。如果你有任何问题或建议,欢迎在评论区留言。

以上博客详细介绍了 RabbitMQ 的确认消费机制,并给出了不同场景下的配置示例。通过这些配置,你可以根据业务需求灵活调整消费者实例数量和确认模式,确保消息的可靠传输和处理。

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

相关文章:

  • 网站个人中心页面设计青岛做网站哪家强
  • 网站制作多少钱做网站市场价格
  • 网站模板的好处推广app用什么平台比较好
  • 微服务网站开发搭建网站要什么配置
  • vs和php哪个做网站好一款非常不错的seo网站优化公司源码
  • 南京网站建设案例惠州住房和建设局网站
  • 做淘宝好还是自建网站好建筑工程网上联合报审
  • 建设网站需要购买虚拟主机吗wordpress视差插件
  • 建设网站学什么时候开始做网站邯郸
  • 深圳营销型网站建设制作商网站开发动态
  • 医疗网站模版wordpress mip教程
  • 电商网站建设相关书籍推荐南京网站建设公司大全
  • 虚拟网站免费注册网站页面制作公司
  • 电子商务网站的建设与规划响应式布局的概念
  • 健康湖州网站3号台风最新消息
  • 外国的免费网站网站高端建设网站企业
  • 包头网站开发建设济南 网站建设那家好
  • 成都高级网站建设广东高端网站建设报价
  • 如何免费推广网站推广流程
  • 网站搜索算法南京网站设计的公司
  • 做网站托管的好处彩票网站平台
  • ps做汽车网站下载地址地方志网站建设
  • 太仓违章建设举报网站做跨境电商网站报价
  • 网站开发建设是否需要经营许可成都装修网站设计
  • 网站搭建接单十大免费的免费软件下载官网
  • 用c 做一个小网站怎么做网页价格
  • 怎么样在网上建设网站挣钱云南网站建设一度科技
  • 电子商务安全问题 网站权限管理wap网站程序
  • 淘宝网站所用编码登录wordpress建立数据库吗
  • 电子外贸网站建设海口网站公司