Kafka 0.8.2-beta consumer, 0.8.1 broker.

In our consumer, we retrieve the mbeans 
"kafka.server":name="*-ConsumerLag",type="FetcherLagMetrics" in order to send 
partition lag data to our monitoring service. The underlying metrics object is 
a Gauge[Long], but the "Value" attribute returned by JMX for this mbean is a 
java.lang.Object.

For example:

import java.lang.management._
import javax.management._

val mbs = ManagementFactory.getPlatformMBeanServer
val beanNames = mbs.queryNames(new 
ObjectName("\"kafka.server\":type=\"FetcherLagMetrics\",name=\"*-ConsumerLag\""),
 null)
for (b <- beanNames) println(mbs.getMBeanInfo(b))

generates the output:

javax.management.MBeanInfo[attributes=[javax.management.MBeanAttributeInfo[name=Value,
 type=java.lang.Object, read-only, descriptor={}]], 
descriptor={immutableInfo=true, 
interfaceClassName=com.yammer.metrics.reporting.JmxReporter$GaugeMBean, 
mxbean=false}]

We can work around this by using asInstanceOf[Long], but that usually indicates 
we're doing something wrong.

Am I missing something here? I would expect types like Scala Long to be 
preserved across JMX.

--
Jack Foy <j...@whitepages.com<mailto:j...@whitepages.com>>



Reply via email to