spring-rabbitmq-actuator

SpringBoot RabbitMQ actuator (Queue Metrics & Health-Checks)

License

License

GroupId

GroupId

com.itelg.spring
ArtifactId

ArtifactId

spring-rabbitmq-actuator
Last Version

Last Version

0.6.0-RC2
Release Date

Release Date

Type

Type

jar
Description

Description

spring-rabbitmq-actuator
SpringBoot RabbitMQ actuator (Queue Metrics & Health-Checks)
Project URL

Project URL

https://github.com/julian-eggers/spring-rabbitmq-actuator
Source Code Management

Source Code Management

https://github.com/julian-eggers/spring-rabbitmq-actuator

Download spring-rabbitmq-actuator

How to add to project

<!-- https://jarcasting.com/artifacts/com.itelg.spring/spring-rabbitmq-actuator/ -->
<dependency>
    <groupId>com.itelg.spring</groupId>
    <artifactId>spring-rabbitmq-actuator</artifactId>
    <version>0.6.0-RC2</version>
</dependency>
// https://jarcasting.com/artifacts/com.itelg.spring/spring-rabbitmq-actuator/
implementation 'com.itelg.spring:spring-rabbitmq-actuator:0.6.0-RC2'
// https://jarcasting.com/artifacts/com.itelg.spring/spring-rabbitmq-actuator/
implementation ("com.itelg.spring:spring-rabbitmq-actuator:0.6.0-RC2")
'com.itelg.spring:spring-rabbitmq-actuator:jar:0.6.0-RC2'
<dependency org="com.itelg.spring" name="spring-rabbitmq-actuator" rev="0.6.0-RC2">
  <artifact name="spring-rabbitmq-actuator" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.itelg.spring', module='spring-rabbitmq-actuator', version='0.6.0-RC2')
)
libraryDependencies += "com.itelg.spring" % "spring-rabbitmq-actuator" % "0.6.0-RC2"
[com.itelg.spring/spring-rabbitmq-actuator "0.6.0-RC2"]

Dependencies

compile (4)

Group / Artifact Type Version
org.springframework.boot : spring-boot-actuator jar 2.1.2.RELEASE
org.springframework.amqp : spring-rabbit jar 2.1.3.RELEASE
io.micrometer : micrometer-core jar 1.1.2
org.slf4j : slf4j-api jar 1.7.25

test (4)

Group / Artifact Type Version
org.easymock : easymock jar 4.0.2
org.powermock : powermock-module-junit4 jar 2.0.0
org.powermock : powermock-api-easymock jar 2.0.0
org.jacoco : org.jacoco.agent jar 0.8.2

Project Modules

There are no modules declared in this project.

spring-rabbitmq-actuator

Maven Central Codacy Badge Codacy Badge Build Status

SpringBoot RabbitMQ Actuator (Queue Metrics & Health-Checks)

Maven

<dependency>
  <groupId>com.itelg.spring</groupId>
  <artifactId>spring-rabbitmq-actuator</artifactId>
  <version>0.6.0-RC2</version>
</dependency>

Precondition (Example)

You have to add the declaring RabbitAdmin to each queue. The specific RabbitAdmin is required to fetch the queue-information.

@Bean
public Queue exampleQueue()
{
  Queue queue = new Queue("com.itelg.spring.rabbitmq.test");
  queue.setAdminsThatShouldDeclare(rabbitAdmin());
  return queue;
}

Health-Checks

Example

@Bean
public HealthIndicator rabbitQueueCheckHealthIndicator()
{
  RabbitQueueCheckHealthIndicator healthIndicator = new RabbitQueueCheckHealthIndicator();
  healthIndicator.addQueueCheck(exampleQueue1, 10000, 1);
  healthIndicator.addQueueCheck(exampleQueue2, 50000, 3);
  return healthIndicator;
}

Response (/actuator/health)

{
	"status" : "DOWN",
	"rabbitQueueCheck" : 
	{
		"status" : "DOWN",
		"com.examle.exampleQueue1" : 
		{
			"status" : "UP",
			"currentMessageCount" : 214,
			"maxMessageCount" : 10000,
			"currentConsumerCount" : 5,
			"minConsumerCount" : 1
		},
		"com.example.exampleQueue2" : 
		{
			"status" : "DOWN",
			"currentMessageCount" : 67377,
			"maxMessageCount" : 50000,
			"currentConsumerCount" : 0,
			"minConsumerCount" : 3
		}
	}
}

Metrics

Example (Autowires all queue-beans)

@EnableRabbitMetrics
@Configuration
public class RabbitMetricsConfiguration
{
}

Response (/actuator/metrics)

{
  "names" : 
  [
    "jvm.memory.used",
    "process.cpu.usage",
    "...",  
    "rabbitmq.queue.messages.current",
    "rabbitmq.queue.consumers.current",
    "rabbitmq.queue.messages.max",
    "rabbitmq.queue.consumers.min",
    "..."    
  ]
}

Detailed:

{
  "name": "rabbitmq.queue.messages.current",
  "description": null,
  "baseUnit": null,
  "measurements": [
    {
      "statistic": "VALUE",
      "value": 215
    }
  ],
  "availableTags" : [ {
    "tag" : "queue",
    "values" : [ "dlq-example-simple-queue-dlq", "dlq-example-simple-queue" ]
  } ]
}

Prometheus-Example:

# HELP rabbitmq_queue_messages_current  
# TYPE rabbitmq_queue_messages_current gauge
rabbitmq_queue_messages_current{queue="dlq-example-simple-queue",} 0.0
rabbitmq_queue_messages_current{queue="dlq-example-simple-queue-dlq",} 371.0
# HELP rabbitmq_queue_consumers_current  
# TYPE rabbitmq_queue_consumers_current gauge
rabbitmq_queue_consumers_current{queue="dlq-example-simple-queue",} 1.0
rabbitmq_queue_consumers_current{queue="dlq-example-simple-queue-dlq",} 0.0

Versions

Version
0.6.0-RC2
0.6.0-RC1
0.5.0-RELEASE
0.4.0-RELEASE
0.3.0-RELEASE
0.2.5-RELEASE