我想计算并打印方法调用率,假设我有以下方法,对每个使用的消息(来自kafka)调用:

public class Consumer {

public void run() {

while (true) {

ConsumerRecords recs = consumer.poll();

for(ConsumerRecord record: recs) {

parseMessageToDB(record.getValue());

}

}

}

public void parseMessageToDB(String message) {

// message parsing logic..

}

}

我的目标是计算每秒的parseMessageToDB方法调用,以了解我的应用程序使用来自Kafka的事件的速度。

我试着用

RateLimiter

但它不返回当前的调用率。

现在,我得到了下面的解决方案,我只需计算15秒内消耗的消息数,并在登录后将其重置为零。

这个计算不太准确,因为我依赖于计时器间隔,而且有可能从另一个15秒窗口获取(或重置)值,但这至少给了我一些图片:

public class Consumer {

private final Timer timer = new Timer();

private final AtomicLong parsedEvents = new AtomicLong();

private static final int CONSUMER_TIMER_RATE_SEC = 15;

public Consumer () {

timer.schedule(new TimerTask() {

@Override

public void run() {

logEventsParsingRate();

}

}, 0, CONSUMER_TIMER_RATE_SEC*1000);

}

public void run() {

while (true) {

ConsumerRecords recs = consumer.poll();

for(ConsumerRecord record: recs) {

parseMessageToDB(record.getValue());

}

parsedEvents.addAndGet(recs.count());

}

}

private void logEventsParsingRate() {

logger.info("Consumer events consuming rate per sec: " +

handledEvents.getAndSet(0)/CONSUMER_TIMER_RATE_SEC);

}

}

所以我还在寻找其他更精确的解决方案。

java 度量_Java度量方法调用率相关推荐

  1. java content()_Java contentEquals() 方法 - Break易站

    Java contentEquals() 方法 Java String类 contentEquals() 方法用于将此字符串与指定的 StringBuffer 比较. 语法 public boolea ...

  2. java 类型参数_java – 通用方法类型参数

    您的两个问题都可以通过以下方式解答:这是Java语法.在Java语言中,参数化方法声明如下: [optional modifiers] [return type] foo() {} 它声明了一个名为T ...

  3. java replace( . )_Java replace() 方法

    Java replace() 方法 Java String类 replace() 方法通过用 newChar 字符替换字符串中出现的所有 oldChar 字符,并返回替换后的新字符串. 语法 publ ...

  4. JAVA min()_Java min()方法

    Java min()方法 min() 方法用于返回两个参数中的最小值. 语法 该方法有以下几种语法格式: double min(double arg1, double arg2) float min( ...

  5. java 参数传递_java中方法的参数传递机制

    无论是什么语言,要讨论参数传递方式,就得从内存模型说起,主要是我个人觉得从内存模型来说参数传递更为直观一些.闲言少叙,下面我们就通过内存模型的方式来讨论一下Java中的参数传递. 这里的内存模型涉及到 ...

  6. java content()_Java contentEquals() 方法

    全屏 Java contentEquals() 方法 contentEquals() 方法用于将将此字符串与指定的 StringBuffer 比较. 语法public boolean contentE ...

  7. 类与方法java讲解_Java中方法使用的深入讲解

    方法的使用 1.方法的基本用法 什么是方法,方法就是一个代码片段,类似于c/c++ 语言中的"函数". 1.1方法存在的意义: 是能够模块化的组织代码(当代码规模比较复杂的时候). ...

  8. java 正切_Java tan()方法

    Java tan()方法 tan() 方法用于返回指定double类型参数的正切值. 语法 doubletan(doubled) 参数 d -- 任何原生数据类型. 返回值 返回指定double类型参 ...

  9. java起名_java命名方法 | 学步园

    Java命名方法 1.骆驼(Camel)命名法:第一个字母小写,随后的每个单词的第一个字母大写.如:studentName 2.帕斯卡(Pascal)命名法:每一个单词的第一个字母都大写.如:Stud ...

最新文章

  1. 区块链概况:什么是区块链
  2. C#调用Win32 的API函数--User32.dll
  3. Linq let Concat
  4. 静态代理和动态的本质区别
  5. java+分支合并主线_git如何合并两个远端分支?
  6. JavaScript Essentials:如何为循环而烦恼
  7. java addall equals_Java究极打基础之ArrayList篇
  8. Color类提供的颜色
  9. php扩展多线程和多进程,PHP 多进程和多线程的优缺点
  10. File Finder pro Mac版重复文件查找器使用方法
  11. 2019最新IDEA Java教学视频课程资料
  12. mysql表关联查询都有什么方式_所有关联表查询方式
  13. u-boot中nand相关命令使用---- ubi, ubifsls, ubifsmount, ubifsumount
  14. Android的Logcat命令详解:翻译Enabling logcat Logging
  15. jmap和jstack使用
  16. 隐藏受保护的系统文件的注册表键值
  17. rj45管脚定义_“RJ45接口”定义标准是什么?
  18. Nintendo帐户,用户ID和网络ID:Nintendo所有令人困惑的帐户,说明
  19. 郑州小程序分销系统开发怎么设计?
  20. 电容充电放电时间计算公式

热门文章

  1. [转]setTimeout() 函数未定义错误
  2. SQL Server 日期格式
  3. 解决 vs2010问题 error MSB8008: 指定的平台工具集(v110)未安装或无效
  4. 卷起来了,写了一套Tensorflow和Pytorch的学习笔记(20G/代码/PPT/视频)
  5. word2vec中的数学模型
  6. 万字综述,GNN在NLP中的应用,建议收藏慢慢看
  7. 找出两个字符串中所有共同的字符_面试中的两个字符串问题竟给我整懵了?!| 原力计划...
  8. vsftpd增加用户 linux,linux下开通vsftpd 添加新ftp用户
  9. php redis用途,redis可以做什么?
  10. 自建服务器同步软件,自建Syncthing中继服务器(私密传输或造福大众)