An application to manage dead lettered messages across multiple brokers
- JDK 8
- Mongo 3.2+
- Gradle. Please refer to the Getting Started Guide for installation and usgae of Gradle.
To configure the project for IntelliJ run:
./gradlew idea
To create the relevant Mongo Roles and Users execute the following (this assumes Mongo is running locally on port 27017 and an admin user exists with password Passw0rd. These values can be overridden using environment variables, see mongo-queue-triage-roles.sh or mongo-queue-triage-users.sh):
./gradlew createUsersAndRolesTo test all the modules run the following commands:
./gradlew testThe web component-test will run against a local firefox. There are a number of options that can be configuration by adding passing in parameters to the build.
Execute the selenium tests against a given browser
./gradlew test -Pbrowser=firefox|phantomjsCan be used to execute the selenium tests against a remote selenium instance
./gradlew test -Pselenium.remote_url=http://localhost:4444/wd/hubTo run the queue-triage-core-server from the command line run:
./start.sh coreTo run the queue-triage-web-server from the command line run:
./start.sh ldap
./start.sh webYour organisation may not allow direct access to the Central Maven repository (https://repo1.maven.org/maven2), if this is the case you will need to create a second "local"
configuration file (filename: ~/.gradle/init.gradle) in the project's root directory and the following snippet to the init.gradle file:
allprojects {
repositories {
maven {
url "https://repo.internal.com/maven2"
}
}
}
where https://repo.internal.com/maven2 is your internal local repo location.
NOTE: This file should not be under version-control.
###Releasing The axion-release plugin is used to apply semantic versioning to the project after successful builds. You can view more detailed documentation on their website but here is the TL;DR
To inspect what version your current codebase is running against:
./gradlew currentVersionTo release a new version of the committed and pushed code, then execute:
./gradlew releaseIf you'd like to test these options out, then you can run in dry-run mode:
./gradlew release -Prelease.dryRunMessage Classification is really the core of the queue-triage application.
Once a messages has been Dead-Lettered by an Application, queue triage:
- De-queues the message
- Classifies the message using a set of Predicates
- Performs one or more Actions
For more information see README.md in core/message-classification