Skip to content

Instantly share code, notes, and snippets.

@slorber
Created March 4, 2013 15:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save slorber/5083211 to your computer and use it in GitHub Desktop.
Save slorber/5083211 to your computer and use it in GitHub Desktop.
NewRelic SpringBatch JobLauncher
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