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

桂林做网站的公司有哪些wordpress时间函数

桂林做网站的公司有哪些,wordpress时间函数,通州设计网站建设,如何做推广最有效果在RabbitMQ中,消息重复消费是一个常见问题,它通常发生在消费者处理消息时出现网络波动、节点故障或消费者自身处理逻辑异常,ACK 失败等情况,都会导致RabbitMQ 不能够正确感知消息已被成功处理,从而重新投递消息。以下是…

在这里插入图片描述

在RabbitMQ中,消息重复消费是一个常见问题,它通常发生在消费者处理消息时出现网络波动、节点故障或消费者自身处理逻辑异常,ACK 失败等情况,都会导致RabbitMQ 不能够正确感知消息已被成功处理,从而重新投递消息。以下是几种常见的解决RabbitMQ消息重复消费问题的方法:

消息幂等性处理(业务上)

  • 幂等性是指对同一操作的多次执行所产生的影响与一次执行的影响相同。在消息处理场景中,意味着无论消息被消费多少次,对业务的最终影响是一致的。
  • 消费者在业务逻辑中通过记录已处理消息的标识来保证幂等性。比如维护一个内存中的Set集合,每次处理消息前,先检查消息的唯一标识是否已在集合中。如果已存在,则说明该消息已被处理过,直接返回;如果不存在,则处理消息并将标识添加到集合中。
public class MessageProcessor {// 已消费的消息private static final Set<String> processedMessages = new HashSet<>();public void processMessage(String messageId, String messageContent) {if (processedMessages.contains(messageId)) {// 消息已处理过,直接返回return;}// 处理消息System.out.println("处理消息:" + messageContent);// 将消息标识添加到已处理集合processedMessages.add(messageId);}
}
  • 利用缓存(如Redis)来记录已处理消息的标识。每次消费消息时,先查询缓存中是否已存在该消息标识。如果存在,说明消息已被处理过,直接丢弃;如果不存在,则处理消息,并将消息标识存入缓存。缓存可以设置过期时间,以避免缓存数据无限增长。
  • 或者建立消息去重表,将已经处理过的消息的唯一键记录在数据库,每次去数据库查询是否处理过此消息。

使用 RabbitMQ 的确认机制

  • RabbitMQ提供了两种确认机制,分别是自动确认(autoAck=true)和手动确认(autoAck=false)。自动确认模式下,RabbitMQ在消息发送给消费者后,会立即认为消息已被成功消费,这种模式可能导致消息重复消费。所以需要进行手动确认,消费者处理完消息后,需要显式地调用basicAck方法通知RabbitMQ消息已被成功处理。如果消费者在处理消息过程中出现异常或未发送basicAck,RabbitMQ会认为消息未被成功消费,从而重新投递消息。
public class ManualAckConsumer {private static final String QUEUE_NAME = "normal_ack_queue";public static void main(String[] argv) throws Exception {ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");Connection connection = factory.newConnection();Channel channel = connection.createChannel();channel.queueDeclare(QUEUE_NAME, false, false, false, null);// 设置为手动确认模式boolean autoAck = false;channel.basicConsume(QUEUE_NAME, autoAck, "normal-ack-consumer",false, false, null, new DefaultConsumer(channel) {@Overridepublic void handleDelivery(String consumerTag,Envelope envelope,AMQP.BasicProperties properties,byte[] body) throws IOException {String message = new String(body, "UTF - 8");System.out.println(" [x] 收到消息: '" + message + "'");try {// 模拟消息处理Thread.sleep(1000);// 手动确认消息channel.basicAck(envelope.getDeliveryTag(), false);System.out.println(" [x] 消息确认成功");} catch (InterruptedException e) {e.printStackTrace();}}});}
}

使用 RabbitMQ 的 Message Deduplication 插件

在消息属性中增加唯一 ID,Message Deduplication 插件基于生产者发送消息时携带的唯一 ID,在 RabbitMQ 服务器端对消息进行去重处理。它会维护一个去重表(通常存储在内存或磁盘,取决于配置),记录已经处理过的消息 ID。当新消息到达时,插件会检查去重表,若发现消息 ID 已存在,则丢弃该消息;否则,将消息 ID 记录到去重表并正常处理消息。


文章转载自:

http://98PgniDY.pcLgj.cn
http://shN9LkXE.pcLgj.cn
http://IJbXMkqa.pcLgj.cn
http://l1NrTiLY.pcLgj.cn
http://QjxcuShI.pcLgj.cn
http://SPsqlc8j.pcLgj.cn
http://8r84aaES.pcLgj.cn
http://kZJOALAy.pcLgj.cn
http://0lWkJpA1.pcLgj.cn
http://5UaUFrzx.pcLgj.cn
http://qPpfegT5.pcLgj.cn
http://vXwLFEgJ.pcLgj.cn
http://ojyVx6mY.pcLgj.cn
http://6Lbjkkrm.pcLgj.cn
http://WQ4Oq2Uy.pcLgj.cn
http://jsCJWWME.pcLgj.cn
http://4VbXVueE.pcLgj.cn
http://9OW4RaO9.pcLgj.cn
http://ldpxSIKy.pcLgj.cn
http://soS8U1Zd.pcLgj.cn
http://Aul6bqq1.pcLgj.cn
http://Mkwkuotu.pcLgj.cn
http://IdsxYrTB.pcLgj.cn
http://AQRyNOEW.pcLgj.cn
http://IbKpwnpe.pcLgj.cn
http://0DziYlB4.pcLgj.cn
http://Yiou6p0W.pcLgj.cn
http://S4Z7Ad8h.pcLgj.cn
http://ug4LRxBL.pcLgj.cn
http://tqO4oDG5.pcLgj.cn
http://www.dtcms.com/wzjs/737803.html

相关文章:

  • 鹤壁网站建设公司律师手机网站模板
  • 各大网站推广软件东莞自己注册公司流程
  • 学习网站建设有前景没上海高端品牌网站制作
  • 建设部网站办事大厅电脑培训班多少费用
  • wordpress
    江门seo代理计费
                          
  • 商务网站建设ppt网页模板psd素材
  • 公司网站首页模板顺德网站建设哪家好
  • 网站种类有哪些海口网站公司
  • 做一个类似微博的网站需要怎麼做自己做游戏的 网站
  • 可以放友情链接的网站做网站如何自己寻找客户
  • wordpress官方网站亿恩 网站备案
  • 网站做淘客做衣服的网站
  • 电脑网站开发网站模块标准版
  • 知名的咨询行业网站制作创意设计网站推荐
  • 山东军辉建设集团有限公司 公司网站网址做网站需要租服务器吗
  • 有哪些企业可以做招聘的网站有哪些内容南昌手机网站
  • 樟木头网站推广h5页面制作代码
  • 广州注册公司核名在哪个网站自己怎样做广告链接
  • 手机网站搭建福建响应式网站制作
  • 发布网站需要多少钱国家示范建设成果网站
  • 建设一个视频网站需要什么网站调用微博
  • 在线代理网页浏览网站免费com域名申请注册
  • html5微网站泾阳县住房和城乡建设局网站
  • 新网站的站点验证保定学校网站建设
  • 南头企业网站建设公司网站建设 客户评价
  • 怎么做考试资料分享网站网站建设进度汇报
  • 长沙高校网站制作公司小米发布会时间2022
  • 网站制作东莞百元建站
  • 制作网站建设入门网站空间商
  • 备案的时候网站名称太原市建设厅官方网站