I hereby claim:
- I am jkuipers on github.
- I am jkuipers (https://keybase.io/jkuipers) on keybase.
- I have a public key ASCj78lyxPW8_W1t735luDbfcfDboljNT1nxLwkDZvK7rQo
To claim this, I am signing this object:
@AutoConfiguration(before = io.awspring.cloud.autoconfigure.sqs.SqsAutoConfiguration.class, | |
afterName = "org.springframework.boot.actuate.autoconfigure.tracing.BraveAutoConfiguration") | |
@ConditionalOnBean(Tracing.class) | |
public class SqsTracingAutoConfiguration { | |
@Bean(name = SqsBeanNames.SQS_LISTENER_ANNOTATION_BEAN_POST_PROCESSOR_BEAN_NAME) | |
TracingSqsListenerAnnotationBeanPostProcessor tracingSLABPP(Tracing tracing) { | |
return new TracingSqsListenerAnnotationBeanPostProcessor(tracing); | |
} | |
static class TracingSqsListenerAnnotationBeanPostProcessor extends SqsListenerAnnotationBeanPostProcessor { |
@Bean | |
SqsTemplate sqsTemplate(SqsAsyncClient sqsAsyncClient, ObjectMapper objectMapper, Tracing tracing) { | |
var injector = tracing.propagation().injector( | |
(Propagation.Setter<Map<String, Object>, String>) (headersMap, key, value) -> { | |
// only propagate the traceparent attr, no additional baggage, since SQS only supports a max of 10 attrs | |
if (key.startsWith("trace")) headersMap.put(key, value); | |
}); | |
var converter = new SqsMessagingMessageConverter() { | |
@Override | |
public Message fromMessagingMessage(org.springframework.messaging.Message<?> message, MessageConversionContext context) { |
/** | |
* Starting with Boot 3, the {@code client.name} tag is no longer included by default | |
* in the {@code http.client.requests} metrics. Restore it by overriding | |
* {@link DefaultClientRequestObservationConvention#getLowCardinalityKeyValues(ClientRequestObservationContext)}. | |
* | |
* @return {@link ClientRequestObservationConvention} that adds the {@code client.name} to the low cardinality key-values. | |
*/ | |
@Bean | |
ClientRequestObservationConvention clientNameAddingObservationConvention() { | |
return new DefaultClientRequestObservationConvention() { |
import org.apache.catalina.connector.Connector; | |
import org.apache.coyote.AbstractProtocol; | |
import org.springframework.boot.context.properties.ConfigurationProperties; | |
import org.springframework.boot.context.properties.EnableConfigurationProperties; | |
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; | |
import org.springframework.boot.web.server.WebServerFactoryCustomizer; | |
import org.springframework.context.annotation.Bean; | |
import org.springframework.context.annotation.Configuration; | |
import org.springframework.context.annotation.Profile; |
import io.micrometer.core.instrument.Gauge; | |
import io.micrometer.core.instrument.MeterRegistry; | |
import io.micrometer.core.instrument.binder.BaseUnits; | |
import io.micrometer.core.instrument.binder.MeterBinder; | |
import org.slf4j.Logger; | |
import org.slf4j.LoggerFactory; | |
import org.springframework.util.ReflectionUtils; | |
import java.lang.reflect.Method; |
import org.slf4j.MDC; | |
import org.springframework.core.task.TaskDecorator; | |
import java.util.Map; | |
public class MDCPropagatingTaskDecorator implements TaskDecorator { | |
@Override | |
public Runnable decorate(Runnable runnable) { | |
Map<String, String> callerContext = MDC.getCopyOfContextMap(); |
subprojects { subproject -> | |
// ... | |
plugins.withId('org.springframework.boot') { | |
springBoot { | |
bootJar { | |
layered { | |
// application follows Boot's defaults | |
application { | |
intoLayer("spring-boot-loader") { |
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; | |
import org.springframework.boot.actuate.health.Health; | |
import org.springframework.boot.actuate.health.HealthIndicator; | |
import org.springframework.boot.actuate.health.Status; | |
import org.springframework.util.ReflectionUtils; | |
import java.lang.reflect.Field; | |
import java.util.LinkedHashMap; | |
import java.util.Map; | |
import java.util.concurrent.atomic.AtomicBoolean; |
I hereby claim:
To claim this, I am signing this object:
import com.netflix.hystrix.HystrixThreadPoolKey; | |
import com.netflix.hystrix.HystrixThreadPoolProperties; | |
import com.netflix.hystrix.strategy.HystrixPlugins; | |
import com.netflix.hystrix.strategy.concurrency.HystrixConcurrencyStrategy; | |
import com.netflix.hystrix.strategy.concurrency.HystrixRequestVariable; | |
import com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableLifecycle; | |
import com.netflix.hystrix.strategy.eventnotifier.HystrixEventNotifier; | |
import com.netflix.hystrix.strategy.executionhook.HystrixCommandExecutionHook; | |
import com.netflix.hystrix.strategy.metrics.HystrixMetricsPublisher; | |
import com.netflix.hystrix.strategy.properties.HystrixPropertiesStrategy; |