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

网站设计素材图片线上营销技巧和营销方法

网站设计素材图片,线上营销技巧和营销方法,湘潭做网站 都来磐石网络,php用什么做网站服务器吗文章目录 问题示例异常 原因nack方法Acknowledgment接口实现类:ConsumerAcknowledgment实现类:ConsumerBatchAcknowledgment 解决方案1 批量消费指定index示例 2 单条消费示例 问题 使用BatchAcknowledgingMessageListener 批量消费Kafka消息&#xff0…

文章目录

  • 问题
    • 示例
    • 异常
  • 原因
    • nack方法
    • Acknowledgment接口
    • 实现类:ConsumerAcknowledgment
    • 实现类:ConsumerBatchAcknowledgment
  • 解决方案
    • 1 批量消费指定index
      • 示例
    • 2 单条消费
      • 示例

问题

使用BatchAcknowledgingMessageListener 批量消费Kafka消息,成功则手动提交offset,失败则重试。消费成功的情况下没有问题,但消费失败情况下,调用nack方法重试时则报异常。

示例

public class BatchCustomMessageListener implements BatchAcknowledgingMessageListener {private MessageHandler messageHandler;public BatchCustomMessageListener(MessageHandler messageHandler) {this.messageHandler = messageHandler;}@Overridepublic void onMessage(List data, Acknowledgment acknowledgment) {try {messageHandler.handle(data); // 处理多条消息acknowledgment.acknowledge(); // 成功处理后提交偏移量} catch (Exception e) {// 消息处理失败,30min后重试// nack作用:将会在指定sleep时间后,重新消费消息。在sleep期间内,不会消费新消息。acknowledgment.nack(30 * 60 * 1000); // 这里报了异常}}
}

上边的代码乍一看没啥问题,编译,启动也都没报错。但是在执行nack的时候进到了Acknowledgment接口默认nack(sleep) 方法里边,并抛出异常。

nack(sleep) is not supported by this Acknowledgment

异常

在这里插入图片描述
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8bbf4f37af134374bf1f4e34c2687dbe.png

原因

Acknowledgment接口有两个nack方法:nack(long sleep)nack(int index, long sleep), 以及两个实现类ConsumerAcknowledgmentConsumerBatchAcknowledgment。ConsumerAcknowledgment仅实现了nack(long sleep),而ConsumerBatchAcknowledgment仅实现了nack(int index, long sleep)。

nack方法

注意:调用nack方法后,将会在指定sleep时间后,重新消费消息。在sleep期间内,不会消费新消息。

Acknowledgment接口

在这里插入图片描述

实现类:ConsumerAcknowledgment

在这里插入图片描述

实现类:ConsumerBatchAcknowledgment

在这里插入图片描述

这样的设计也很好理解。。
当BatchAcknowledgingMessageListener批量消费消息时, 使用的是ConsumerBatchAcknowledgment,重试时需要告诉ConsumerBatchAcknowledgment要从这批量消息中的哪条开始重试消费,即要指定index值。我的例子中调用的是nack(long sleep),没有指定index,所以进到了默认方法里,抛了异常。

而使用AcknowledgingMessageListener消费单条消息时,使用的是ConsumerAcknowledgment,重试时它知道重试当前的消息,因为就这一条,所以只需要指定重试时间就可以了。

也就是说批量消费时,重试要调用nack(int index, long sleep),单条消费时,重试要调用nack(long sleep),二者不搭配,就会抛不支持该方法的异常。

解决方案

1 批量消费指定index

示例

public class BatchCustomMessageListener implements BatchAcknowledgingMessageListener {private MessageHandler messageHandler;public BatchCustomMessageListener(MessageHandler messageHandler) {this.messageHandler = messageHandler;}@Overridepublic void onMessage(List data, Acknowledgment acknowledgment) {int index = 0;try {for (; index < data.size(); index++) {messageHandler.handle(data.get(index)); // 处理单条消息}// 成功处理后提交偏移量acknowledgment.acknowledge();} catch (Exception e) {// 消息处理失败,30min后重试index及index之后的消息acknowledgment.nack(index, 30 * 60 * 1000);}}}

2 单条消费

改成单条消费消息,调用nack(long sleep)

示例

public class SingleCustomMessageListener implements AcknowledgingMessageListener {private MessageHandler messageHandler;public SingleCustomMessageListener(MessageHandler messageHandler) {this.messageHandler = messageHandler;}@Overridepublic void onMessage(ConsumerRecord data, Acknowledgment acknowledgment) {try {messageHandler.handle(data); // 处理单条消息acknowledgment.acknowledge();} catch (Exception e) {acknowledgment.nack(30 * 60 * 1000);}}
http://www.dtcms.com/wzjs/349215.html

相关文章:

  • 58网站自己做南京seo排名
  • 做细胞激活的母液网站nba今日数据
  • 佛山做网站优化公司百度网站域名
  • 河南省工程建设协会网站百度知道小程序
  • php个人网站源码产品怎么在网上推广
  • 网站建设与运营推广的回报材料哪些网站推广不收费
  • 长沙网站建设公司哪家专业网络营销和网络销售的关系
  • 晋中seo天津网站seo设计
  • 广州电子商城网站建设东莞做好网络推广
  • 惠州疫情最新消息今天aso优化重要吗
  • 提供网站建设服务河北网站优化公司
  • 网站的原型怎么做免费好用的网站
  • 摄影公司网站百度怎么推广网站
  • 做日本贸易哪个网站好百度输入法
  • 建设一个网站要多少钱企业培训机构有哪些
  • 会员小程序怎么做seo营销
  • tiktok跨境电商搜索引擎优化的主要工作
  • 江阴住房和城乡建设局网站成都今天重大新闻事件
  • 个人网站的设计与开发软文客
  • 100m做电影网站百度seo招聘
  • 做网站公司哪家比较好优化网站标题名词解释
  • 网站建设和平面设计精准广告投放
  • 网站改版打造全新网站搜索引擎优化技术都有哪些
  • 如东网站建设公司全国疫情排行榜最新情况列表
  • 深圳网站工作室网站关键词搜索排名
  • 住房和城乡建设部官方网站办事大厅百度免费推广登录入口
  • 做动画相册在哪个网站好企业网站建设的重要性
  • 网站可以免费做吗免费推广的平台
  • 特色专业建设验收网站最新全国疫情消息
  • 福建省住房城乡建设部网站公司企业网站制作需要多少钱