Example usage for com.amazonaws.services.cloudwatch AmazonCloudWatchAsyncClient putMetricDataAsync

List of usage examples for com.amazonaws.services.cloudwatch AmazonCloudWatchAsyncClient putMetricDataAsync

Introduction

In this page you can find the example usage for com.amazonaws.services.cloudwatch AmazonCloudWatchAsyncClient putMetricDataAsync.

Prototype

@Override
    public java.util.concurrent.Future<PutMetricDataResult> putMetricDataAsync(PutMetricDataRequest request) 

Source Link

Usage

From source file:com.mimesis.jmx.Exporter4CloudwatchAsyncClient.java

License:Apache License

@Override
public void export(Collection<Result> data) throws Exception {
    //TODO configure client to use POST
    AmazonCloudWatchAsyncClient awsClient = new AmazonCloudWatchAsyncClient(_awsCredentials);
    if (_region != null) {
        awsClient.setEndpoint(String.format("monitoring.%s.amazonaws.com", _region));
    }/*from  w  w w.  j  a va  2 s .  c o m*/

    Collection<Dimension> dimensions = parseDimensions(_dimensions);
    ArrayList<MetricDatum> metrics = new ArrayList<MetricDatum>(AWS_METRICS_MAX);
    System.out.println("send START");
    int i = 0;
    for (Result d : data) {
        if (!(d.value instanceof Number)) {
            logger.info(String.format("CloudWatch only accept value of type Number : [%s][%s] => %s",
                    d.objectName, d.key, String.valueOf(d.value)));
            continue;
        }
        MetricDatum metricDatum = new MetricDatum().withMetricName(metricNameOf(d.objectName, d.key))
                .withValue(((Number) d.value).doubleValue()).withTimestamp(d.timestampDate);
        if (dimensions.size() > 0) {
            metricDatum = metricDatum.withDimensions(dimensions);
        }
        if (d.unit != null) {
            metricDatum = metricDatum.withUnit(d.unit);
        }
        System.out.println("send : " + (++i) + metricDatum.getMetricName());
        metrics.add(metricDatum);
        if (metrics.size() == AWS_METRICS_MAX) {
            waitEndOfLastExport();
            _lastFuture = awsClient.putMetricDataAsync(newPutMetricDataRequest(metrics));
            metrics = new ArrayList<MetricDatum>(AWS_METRICS_MAX);
        }
    }
    if (metrics.size() > 0) {
        waitEndOfLastExport();
        _lastFuture = awsClient.putMetricDataAsync(newPutMetricDataRequest(metrics));
    }
}