The project uses Gradle as a build tool. It already contains
./gradlew wrapper script, so there's no need to install gradle.
To build the project execute the following command:
./gradlew buildCreate the image of the application by executing the following command:
./gradlew assembleNote: Docker Compose V2 is highly recommended for building and running the application.
In the Compose V2 old docker-compose command is replaced with docker compose.
Create docker image:
docker compose buildRun the distribution (created in build/install/opal-logging-service directory)
by executing the following command:
docker compose upThis will start the API container exposing the application's port
(set to 4065 in this template app).
In order to test if the application is up, you can call its health endpoint:
curl http://localhost:4065/healthYou should get a response similar to this:
{"status":"UP","diskSpace":{"status":"UP","total":249644974080,"free":137188298752,"threshold":10485760}}
To skip all the setting up and building, just execute the following command:
./bin/run-in-docker.shFor more information:
./bin/run-in-docker.sh -hScript includes bare minimum environment variables necessary to start api instance. Whenever any variable is changed or any other script regarding docker image/container build, the suggested way to ensure all is cleaned up properly is by this command:
docker compose rmIt clears stopped containers correctly. Might consider removing clutter of images too, especially the ones fiddled with:
docker images
docker image rm <image-id>There is no need to remove postgres and java or similar core images.
When running the service locally (outside Docker), use the host-mapped database port from
docker-compose.yml:
OPAL_LOGGING_DB_HOST=localhostOPAL_LOGGING_DB_PORT=5436OPAL_LOGGING_DB_NAME=opal-logging-dbOPAL_LOGGING_DB_USERNAME=opal-loggingOPAL_LOGGING_DB_PASSWORD=opal-logging
Enable the Azure Service Bus consumer and provide the queue connection details (enabled by default):
LOGGING_PDPL_CONSUMER_ENABLED=true(optional; defaults totrue)SERVICEBUS_CONNECTION_STRING=<Azure Service Bus connection string>SERVICEBUS_LOGGING_PDPL_QUEUE_NAME=logging-pdplSERVICEBUS_LOGGING_PDPL_PROTOCOL=amqps(optional; defaults to emulator-friendlyamqp)
The listener uses Session.CLIENT_ACKNOWLEDGE, so acknowledgements are only sent after the
@JmsListener completes successfully. Let exceptions propagate (do not swallow them) so
failed messages are redelivered.
docker compose up now includes the Service Bus emulator plus its SQL Server dependency.
The emulator configuration lives in ServiceBus_Emulator_config.json and defines the
logging-pdpl queue. Defaults in application.yaml point at the emulator, and the compose
file overrides SERVICEBUS_CONNECTION_STRING to use the Docker network hostname.
Use the manual publisher to enqueue a PDPO message to any Azure Service Bus queue:
LOGGING_PDPL_ASB_TEST_ENABLED=trueSERVICEBUS_CONNECTION_STRING=<Azure Service Bus connection string>SERVICEBUS_LOGGING_PDPL_QUEUE_NAME=<queue name>
Run it from the repo root:
LOGGING_PDPL_ASB_TEST_ENABLED=true ./gradlew integration \
--tests uk.gov.hmcts.opal.logging.config.PdplQueueConnectivityIntegrationTestFor the full manual flow, see docs/PO-2265-asb-manual-test.md.
Enable the test-support REST endpoints (disabled by default):
OPAL_LOGGING_TEST_SUPPORT_ENABLED=true
This project is licensed under the MIT License - see the LICENSE file for details