1

我正在为 ElasticSearch 的 TransportClient 编写一个子类。(好吧,那是无关紧要的信息)

我想计算各种功能的频率和时间统计。所以我写了以下客户端(只包括一些部分以避免复杂化)

    import com.yammer.metrics.Metrics;
    ...
    public class MikeESClient extends TransportClient
        {
           ...
           private Timer indexTimer, ... ,searchTimer;
           private TimerContext indexTimerContext,..., searchTimerContext;
            //

            //Meters
            private Meter indexMeter,getMeter,updateMeter, deleteMeter, searchMeter;
            //
            private void initial()
                {
                    //intialize the Timers
                    indexTimer= Metrics.newTimer(MikeESClient.class, "index Response", TimeUnit.MILLISECONDS, TimeUnit.SECONDS);.
                .
                .
                .

                    //Timer Initialization Done

                    //Meters
                    indexMeter = Metrics.newMeter(metricName("Index"), "indexing", TimeUnit.SECONDS);
                .
                .
                .

                }
                .
                .
                .
            @Override
            public ActionFuture<IndexResponse> index(IndexRequest request)
                {
                    indexTimerContext = indexTimer.time(); //start timer
                    indexMeter.mark();//meter
                    ActionFuture<IndexResponse>temp=super.index(request);
                    indexTimerContext.stop(); //stop timer
                    return temp;
                }
                .
                .
                .
                similar functions
                .
                .
                .

            @Override
            public void search(SearchRequest request, ActionListener<SearchResponse> listener)
                {
                    searchTimerContext = indexTimer.time(); //start timer
                    searchMeter.mark();//meter
                    super.search(request,listener);
                    searchTimerContext.stop(); //stop timer
                }

        }

我在各种函数中一次又一次地编写了 Timer 和 Meter 的类似代码 - index()、get()、update()、delete() 和 search()。我开始知道使用注释可以完成同样的事情。但不幸的是,我不知道 java 中的注释。好吧,我很想知道如何在 java 中使用它们。这将有助于大幅减少我的代码。

我现在只是想使用@Timer、@Meter 和默认设置。我想为指标使用自定义名称。

4

0 回答 0