睡眠/等待功能的速度

时间:2018-04-11 18:37:13

标签: velocity

使用apache velocity,我正在对网络设备执行SNMP轮询以获取已接收的数据包。目标是获得每秒接收的数据包(PPS),但网络设备仅返回累积值。

所以我的计划是每秒运行一次snmp投票,我可以从新值中减去旧值以获得PPS。

我找不到任何睡眠或等待功能的apache速度,可以将轮询延迟一秒。

以下是我的脚本供参考。

#device($defensePro, 'type=defensePro', 'lazyConnect=true')
#param($output, 'type=string', 'direction=out')
#set($dp = $defensePro.readAllBeans('RsACCStatEntry'))
#result('text/text')
#foreach($x in $dp)
  #if($x.id.toString().equals('RECEIVED'))
    #set($id = $x.id)
    #set($value = $x.value)
    $date.get('H:m:s') Poll $velocityCount: $id $value
  #end      
#end   
#end 

输出

18:33:53 Poll 1: RECEIVED 18878707

如果有apache速度的睡眠功能或任何其他达到预期效果的方式,有人可以告诉我吗

2 个答案:

答案 0 :(得分:0)

我不确定这是正确的方法,但Velocity可以拨打java methods

添加方法(例如,对你的defensePro)

public void sleep() { Thread.sleep(1000) }

从模板

调用它
$defensePro.sleep(); 

velocity mailing list

中找到了一个非常古老的答案
  

Thread.sleep应该可以工作。它会暂停给定的当前线程   时间量

答案 1 :(得分:0)

感谢您的回复,以下为我工作

#device($defensePro, 'type=defensePro', 'lazyConnect=true')
#param($output, 'type=string', 'direction=out')
#set($dp = $defensePro.readAllBeans('RsACCStatEntry'))
    #macro(sleepX, $seconds)
    #set($duration = $seconds * 1000)
    #set($class = $class.inspect('java.lang.Thread'))
    $class.type.sleep($duration)
    #end
#foreach($i in [1..6])
#foreach($x in $dp)
#if($x.id.toString().equals('RECEIVED'))
#set($id = $x.id)
#set($value = $x.value)
$date.get('H:m:s') Poll $i: $id $value
#sleepX(1)
#end    #end   #end

示例输出

17:4:10 Poll 1: RECEIVED 0
17:4:12 Poll 2: RECEIVED 0
17:4:13 Poll 3: RECEIVED 0
17:4:14 Poll 4: RECEIVED 0
17:4:15 Poll 5: RECEIVED 0
17:4:16 Poll 6: RECEIVED 0