= FIRDS Project
Mikael Andersson Wigander mikael.andersson.wigander@pm.me
1.0, July 29, 2022: Enterprise Integration Pattern demo
:coderay-linenums-mode: table
:source-indent: 0
:icons: font
:toc:
:doctype: article:
:media: print
:pdf-page-size: A4
:pdf-page-layout: portrait
:experimental:
:autofit-options:
:imagesdir: ./images/
:sourcedir: ../../main
:testdir: src/test
:source-highlighter: coderay
[.lead]
This project uses Quarkus, the Supersonic Subatomic Java Framework.
If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ .
== Dependencies
- PostgreSQL database
- ActiveMQ
- Description can be found in
src/main/asciidoc/README.adoc
== Running the application in dev mode
You can run your application in dev mode that enables live coding using:
[source,shell script]
./mvnw compile quarkus:dev
NOTE: Quarkus now ships with a Dev UI, which is available in dev mode only at http://localhost:8080/q/dev/.
== Packaging and running the application
The application can be packaged using:
[source,shell script]
./mvnw package
It produces the quarkus-run.jar file in the target/quarkus-app/ directory.
Be aware that it’s not an über-jar as the dependencies are copied into the target/quarkus-app/lib/ directory.
The application is now runnable using java -jar target/quarkus-app/quarkus-run.jar.
If you want to build an über-jar, execute the following command:
[source,shell script]
./mvnw package -Dquarkus.package.type=uber-jar
The application, packaged as an über-jar, is now runnable using java -jar target/*-runner.jar.
== Creating a native executable
You can create a native executable using:
[source,shell script]
./mvnw package -Pnative
Or, if you don't have GraalVM installed, you can run the native executable build in a container using:
[source,shell script]
./mvnw package -Pnative -Dquarkus.native.container-build=true
You can then execute your native executable with: ./target/firds-1.0.0-SNAPSHOT-runner
If you want to learn more about building native executables, please consult https://quarkus.io/guides/maven-tooling.
== Related Guides
- Camel Core (https://camel.apache.org/camel-quarkus/latest/reference/extensions/core.html[guide]): Camel core functionality and basic Camel languages: Constant, ExchangeProperty, Header, Ref, Simple and Tokenize
- Camel Quartz (https://camel.apache.org/camel-quarkus/latest/reference/extensions/quartz.html[guide]): Schedule sending of messages using the Quartz 2.x scheduler
- Camel Direct (https://camel.apache.org/camel-quarkus/latest/reference/extensions/direct.html[guide]): Call another endpoint from the same Camel Context synchronously
- Camel Data Format (https://camel.apache.org/camel-quarkus/latest/reference/extensions/dataformat.html[guide]): Use a Camel Data Format as a regular Camel Component
- YAML Configuration (https://quarkus.io/guides/config#yaml[guide]): Use YAML to configure your Quarkus application
- Camel Jackson (https://camel.apache.org/camel-quarkus/latest/reference/extensions/jackson.html[guide]): Marshal POJOs to JSON and back using Jackson
- Camel Mock (https://camel.apache.org/camel-quarkus/latest/reference/extensions/mock.html[guide]): Test routes and mediation rules using mocks
- Camel Bean (https://camel.apache.org/camel-quarkus/latest/reference/extensions/bean.html[guide]): Invoke methods of Java beans
- Camel REST OpenApi (https://camel.apache.org/camel-quarkus/latest/reference/extensions/rest-openapi.html[guide]): Configure REST producers based on an OpenAPI specification document delegating to a component implementing the RestProducerFactory interface
- Camel XPath (https://camel.apache.org/camel-quarkus/latest/reference/extensions/xpath.html[guide]): Evaluates an XPath expression against an XML payload
- Camel HTTP (https://camel.apache.org/camel-quarkus/latest/reference/extensions/http.html[guide]): Send requests to external HTTP servers using Apache HTTP Client 4.x
- Camel JSON Path (https://camel.apache.org/camel-quarkus/latest/reference/extensions/jsonpath.html[guide]): Evaluate a JSONPath expression against a JSON message body
- Camel Log (https://camel.apache.org/camel-quarkus/latest/reference/extensions/log.html[guide]): Log messages to the underlying logging mechanism
- Camel SEDA (https://camel.apache.org/camel-quarkus/latest/reference/extensions/seda.html[guide]): Asynchronously call another endpoint from any Camel Context in the same JVM
- Camel JacksonXML (https://camel.apache.org/camel-quarkus/latest/reference/extensions/jacksonxml.html[guide]): Unmarshal an XML payloads to POJOs and back using XMLMapper extension of Jackson
- SmallRye Reactive Messaging (https://quarkus.io/guides/reactive-messaging[guide]): Produce and consume messages and implement event driven and data streaming applications
- Camel ActiveMQ (https://camel.apache.org/camel-quarkus/latest/reference/extensions/activemq.html[guide]): Send messages to (or consume from) Apache ActiveMQ. This component extends the Camel JMS component
- Reactive PostgreSQL client (https://quarkus.io/guides/reactive-sql-clients[guide]): Connect to the PostgreSQL database using the reactive pattern
- Camel JDBC (https://camel.apache.org/camel-quarkus/latest/reference/extensions/jdbc.html[guide]): Access databases through SQL and JDBC
- Camel Rest (https://camel.apache.org/camel-quarkus/latest/reference/extensions/rest.html[guide]): Expose REST services and their OpenAPI Specification or call external REST services
== Provided Code
=== YAML Config
Configure your application with YAML
https://quarkus.io/guides/config-reference#configuration-examples[Related guide section…]
The Quarkus application configuration is located in src/main/resources/application.yml.