Akka StatsD仪表计时器发送数据问题-无法在一个刷新间隔内仅向StatsD服务器发送一个值

Akka StatsD仪表计时器发送数据问题-无法在一个刷新间隔内仅向StatsD服务器发送一个值,akka,graphite,statsd,Akka,Graphite,Statsd,我使用源代码将数据发送到statsd服务器。在我的场景中,我想监视spark作业状态,如果当前作业成功,我们将向statsd服务器发送1,否则发送0。因此,在一个刷新间隔内,我只想向statsd服务器发送一个值(1或0),但它不起作用,如果我添加了一个for循环,并至少发送两次这个值(1或0),它就起作用了,但我不知道为什么要发送两次相同的值,所以我检查了statsd源代码,发现: for (key in gauges) { var namespace = gaugesNamespace.

我使用源代码将数据发送到statsd服务器。在我的场景中,我想监视spark作业状态,如果当前作业成功,我们将向statsd服务器发送1,否则发送0。因此,在一个刷新间隔内,我只想向statsd服务器发送一个值(1或0),但它不起作用,如果我添加了一个for循环,并至少发送两次这个值(1或0),它就起作用了,但我不知道为什么要发送两次相同的值,所以我检查了statsd源代码,发现:

for (key in gauges) {
   var namespace = gaugesNamespace.concat(sk(key));
   stats.add(namespace.join(".") + globalSuffix, gauges[key], ts);
   numStats += 1;
 }
所以仪表的类型应该是迭代器,如果我只发送一个值,它不能被迭代器,这就是我所想的,可能是错误的,希望有人能帮助我解释为什么我至少发送两次一个值

我的客户端代码片段:

  for(i<- 1 to 2) {
      client ! ExcutionTime("StatsD_Prod.Reporting."+name+":"+status_str+"|ms", status)
      Thread.sleep(100)
  }

for(我能添加用于发送仪表值的客户端代码吗?另外,你能解释一下“它不工作”是什么意思吗?仪表通过记录上次收到的值来工作。因此,如果您从多台机器发送相同的度量,它将覆盖以前发送的值。@mrwillihog感谢您的评论,添加了客户端代码段,此时,我尝试了执行时间,与计时器相同。“它不工作”表示服务器没有在度量中显示任何数据,我只想发送一个值,它来自一台机器。发送两次对我有效,但只发送一次,它不会在度量中显示数据,因此我想知道原因。谢谢-该代码看起来像计时器,而不是仪表?仪表以
|g
结尾。您的度量是否显示在e timers部分?@mrwillihog是的,我在代码中使用Timer,如果我为仪表和定时器发送两次,它就会起作用。为两个仪表发送一次是不起作用的。嗯,您可以使用控制台后端启动StatsD,并确保它接收到度量。通常,在StatsD客户端中,您不必指定类型(即
|ms
)。您确定
ExecutionTime
方法没有为您添加
|ms
吗?您可以添加用于发送仪表值的客户端代码吗?另外,您可以解释一下“它不工作”是什么意思吗?仪表通过记录上次收到的值来工作。因此,如果您从多台机器发送相同的度量,它将覆盖以前发送的值。@mrwillihog感谢您的评论,添加了客户端代码段,此时,我尝试了执行时间,与计时器相同。“它不工作”表示服务器没有在度量中显示任何数据,我只想发送一个值,它来自一台机器。发送两次对我有效,但只发送一次,它不会在度量中显示数据,因此我想知道原因。谢谢-该代码看起来像计时器,而不是仪表?仪表以
|g
结尾。您的度量是否显示在e timers部分?@mrwillihog是的,我在代码中使用Timer,如果我为仪表和定时器发送两次,它就会起作用。为两个仪表发送一次是不起作用的。嗯,您可以使用控制台后端启动StatsD,并确保它接收到度量。通常,在StatsD客户端中,您不必指定类型(即
|ms
)。您确定
ExecutionTime
方法没有为您添加
| ms