Skip to content

Commit

Permalink
Bind MeterRegistry instead of injecting it directly
Browse files Browse the repository at this point in the history
  • Loading branch information
raynigon committed May 21, 2024
1 parent 555c135 commit 8e012aa
Show file tree
Hide file tree
Showing 8 changed files with 60 additions and 12 deletions.
26 changes: 26 additions & 0 deletions .github/workflows/update-gradle-wrapper.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Update Gradle Wrapper

on:
schedule:
- cron: "0 0 * * *"

permissions:
contents: read

jobs:
update-gradle-wrapper:
permissions:
contents: write # for gradle-update/update-gradle-wrapper-action
pull-requests: write # for gradle-update/update-gradle-wrapper-action
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Update Gradle Wrapper
uses: gradle-update/update-gradle-wrapper-action@0407394b9d173dfc9cf5695f9f560fef6d61a5fe # v1.0.13
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
labels: dependencies

- uses: gradle/wrapper-validation-action@216d1ad2b3710bf005dc39237337b9673fd8fcd5 # v1.0.3
6 changes: 3 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ plugins {
allprojects {
group = 'com.raynigon.spring-boot'
// version = project.version
sourceCompatibility = '17'
sourceCompatibility = '21'
repositories {
mavenCentral()
}
Expand All @@ -39,8 +39,8 @@ subprojects {
apply plugin: 'signing'
apply plugin: 'net.researchgate.release'

sourceCompatibility = 17
targetCompatibility = 17
sourceCompatibility = 21
targetCompatibility = 21
compileJava.options.encoding = 'UTF-8'
compileTestJava.options.encoding = 'UTF-8'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,8 @@ public ThreadPoolTaskExecutor threadPoolTaskExecutor(){
@Bean
@ConditionalOnClass(MeterRegistry.class)
@ConditionalOnProperty(name = "raynigon.logging.async.metrics.enabled", havingValue = "true")
public AsyncMetricsService micrometerAsyncMetricsService(MeterRegistry meterRegistry){
return new MicrometerMetricsService(meterRegistry);
public AsyncMetricsService micrometerAsyncMetricsService(){
return new MicrometerMetricsService();
}

@Bean
Expand Down
Original file line number Diff line number Diff line change
@@ -1,28 +1,41 @@
package com.raynigon.ecs.logging.async.service;

import com.raynigon.ecs.logging.async.service.helper.MicrometerTimer;
import com.raynigon.ecs.logging.async.service.helper.NoOpTimer;
import com.raynigon.ecs.logging.async.service.helper.TimerWrapper;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Timer;
import io.micrometer.core.instrument.binder.MeterBinder;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class MicrometerMetricsService implements AsyncMetricsService {
public class MicrometerMetricsService implements MeterBinder, AsyncMetricsService {


private static final String QUEUE_TIMER_NAME = "raynigon.async.service.queue.duration";
private static final String EXECUTION_TIMER_NAME = "raynigon.async.service.execution.duration";

private final MeterRegistry meterRegistry;
private MeterRegistry meterRegistry;

@Override
public void bindTo(@NonNull MeterRegistry meterRegistry) {
this.meterRegistry = meterRegistry;
}

@Override
public TimerWrapper createQueueTimer(Class<?> source) {
if (meterRegistry == null) {
return new NoOpTimer();
}
Timer timer = meterRegistry.timer(QUEUE_TIMER_NAME, "source", formatSource(source));
return wrap(timer);
}

@Override
public TimerWrapper createExecutionTimer(Class<?> source) {
if (meterRegistry == null) {
return new NoOpTimer();
}
Timer timer = meterRegistry.timer(EXECUTION_TIMER_NAME, "source", formatSource(source));
return wrap(timer);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,15 @@ class DefaultAsyncServiceSpec extends Specification {

SimpleMeterRegistry meterRegistry = new SimpleMeterRegistry()

AsyncMetricsService metricsService = new MicrometerMetricsService(meterRegistry)
AsyncMetricsService metricsService = new MicrometerMetricsService()

@Subject
AsyncService service = new DefaultAsyncService(pool, metricsService)

def setup() {
((MicrometerMetricsService) metricsService).bindTo(meterRegistry)
}

def 'supplyAsync gets executed'() {
given:
AtomicInteger changed = new AtomicInteger(0)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,11 @@ class MicrometerMetricsServiceSpec extends Specification {
SimpleMeterRegistry meterRegistry = new SimpleMeterRegistry()

@Subject
MicrometerMetricsService service = new MicrometerMetricsService(meterRegistry)
MicrometerMetricsService service = new MicrometerMetricsService()

def setup() {
((MicrometerMetricsService) service).bindTo(meterRegistry)
}

def "create queue timer"() {
when:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
public class EcsConsumerInterceptor<K, V> implements ConsumerInterceptor<K, V> {

@Override
@SneakyThrows
public void configure(Map<String, ?> configs) {
// Nothing has to be done here
}
Expand Down
4 changes: 3 additions & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

0 comments on commit 8e012aa

Please sign in to comment.