Skip to content

Instantly share code, notes, and snippets.

@omidp
Created May 1, 2021 15:39
Show Gist options
  • Save omidp/506c209a2fb016e7f05c40fa84dac616 to your computer and use it in GitHub Desktop.
Save omidp/506c209a2fb016e7f05c40fa84dac616 to your computer and use it in GitHub Desktop.
springboothazelcast4
import com.hazelcast.core.HazelcastInstance;
import org.springframework.boot.actuate.health.AbstractHealthIndicator;
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
/**
* {@link HealthIndicator} for Hazelcast.
*
*/
@Component
public class HazelcastHealthIndicator extends AbstractHealthIndicator {
private final HazelcastInstance hazelcast;
public HazelcastHealthIndicator(HazelcastInstance hazelcast) {
super("Hazelcast health check failed");
Assert.notNull(hazelcast, "HazelcastInstance must not be null");
this.hazelcast = hazelcast;
}
@Override
protected void doHealthCheck(Health.Builder builder) {
this.hazelcast.executeTransaction((context) -> {
builder.up().withDetail("name", this.hazelcast.getName()).withDetail("uuid",
this.hazelcast.getLocalEndpoint().getUuid());
return null;
});
}
}
https://github.com/snicoll/spring-boot/commit/2a1e364cc175d513d77c86d877fea834f5189cbd
@Override
protected void doHealthCheck(Health.Builder builder) {
this.hazelcast.executeTransaction((context) -> {
builder.up().withDetail("name", this.hazelcast.getName()).withDetail("uuid",
this.hazelcast.getLocalEndpoint().getUuid());
builder.up().withDetail("name", this.hazelcast.getName()).withDetail("uuid", extractUuid());
return null;
});
}
private String extractUuid() {
try {
return this.hazelcast.getLocalEndpoint().getUuid();
}
catch (NoSuchMethodError ex) {
// Hazelcast 4
Method endpointAccessor = ReflectionUtils.findMethod(HazelcastInstance.class, "getLocalEndpoint");
Object endpoint = ReflectionUtils.invokeMethod(endpointAccessor, this.hazelcast);
Method uuidAccessor = ReflectionUtils.findMethod(endpoint.getClass(), "getUuid");
return ((UUID) ReflectionUtils.invokeMethod(uuidAccessor, endpoint)).toString();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment