Created
March 4, 2013 15:54
-
-
Save slorber/5083211 to your computer and use it in GitHub Desktop.
NewRelic SpringBatch JobLauncher
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class NewRelicTracingJobLauncherDecorator implements JobLauncher { | |
private static final Logger LOGGER = LoggerFactory.getLogger(NewRelicTracingJobLauncherDecorator.class); | |
private final JobLauncher jobLauncher; | |
public NewRelicTracingJobLauncherDecorator(JobLauncher jobLauncher) { | |
this.jobLauncher = jobLauncher; | |
} | |
@Override | |
@Trace(dispatcher = true,metricName = "Job execution") | |
public JobExecution run(Job job, JobParameters jobParameters) throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException, JobParametersInvalidException { | |
try { | |
appendNewRelicStuff(job,jobParameters); | |
LOGGER.info("NewRelic instrumentation added to job {} launching",job.getName()); | |
} catch ( Exception e ) { | |
LOGGER.error("Can't instrument job with NewRelic. The job "+job.getName()+" may not appear in the NewRelic interface",e); | |
} | |
return jobLauncher.run(job, jobParameters); | |
} | |
private void appendNewRelicStuff(Job job,JobParameters params) { | |
NewRelic.setTransactionName(null,job.getName()); | |
for ( String paramName : params.getParameters().keySet() ) { | |
JobParameter param = params.getParameters().get(paramName); | |
LOGGER.info("Appending to NewRelic transaction the parameter = {}",param); | |
switch (param.getType()) { | |
case STRING: NewRelic.addCustomParameter(paramName,params.getString(paramName)); break; | |
case DOUBLE: NewRelic.addCustomParameter(paramName,params.getDouble(paramName)); break; | |
case LONG: NewRelic.addCustomParameter(paramName,params.getLong(paramName)); break; | |
case DATE: NewRelic.addCustomParameter(paramName,params.getDate(paramName).getTime()); break; | |
default: throw new IllegalStateException("Unknown job parameter type: " + param.getType() + " for param " + param); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment