| = Camel K Modeline |
| |
| Integration files can contain modeline hooks that allow to customize the way integrations are executed via command line. |
| For example: |
| |
| .Hello.java |
| [source,java] |
| ---- |
| // camel-k: dependency=mvn:org.my:application:1.0 // <1> |
| |
| import org.apache.camel.builder.RouteBuilder; |
| |
| public class Hello extends RouteBuilder { |
| @Override |
| public void configure() throws Exception { |
| |
| from("timer:java?period=1000") |
| .bean(org.my.BusinessLogic) // <2> |
| .log("${body}"); |
| |
| } |
| } |
| ---- |
| <1> Modeline import of Maven library |
| <2> Usage of a business logic class from the external library |
| |
| When the integration code above is executed using the `kamel run` CLI command, the modeline options declared in the file are appended to |
| the list of arguments that are passed to the command. |
| |
| The `kamel` CLI will alert you, printing the full command in the shell: |
| |
| [source,console] |
| ---- |
| $ kamel run Hello.java |
| Modeline options have been loaded from source files |
| Full command: kamel run Hello.java --dependency mvn:org.my:application:1.0 |
| ---- |
| |
| Multiple options can be specified for an integration. |
| For example, the following modeline options enables 3scale and limits the integration container memory: |
| |
| .ThreeSscaleRest.java |
| [source,java] |
| ---- |
| // camel-k: trait=3scale.enabled=true trait=container.limit-memory=256Mi // <1> |
| |
| import org.apache.camel.builder.RouteBuilder; |
| |
| public class ThreeScaleRest extends RouteBuilder { |
| |
| @Override |
| public void configure() throws Exception { |
| rest().get("/") |
| .route() |
| .setBody().constant("Hello"); |
| } |
| } |
| ---- |
| <1> Enables both the _container_ and _3scale_ traits, to expose the route via 3scale and limit the container memory. |
| |
| All options that are available for the `kamel run` command can be specified as modeline options. |
| The following is a partial list of useful options: |
| |
| .Useful Modeline Options |
| [cols="1m,2v"] |
| |=== |
| |Option | Description |
| |
| |dependency |
| |An external library that should be included, e.g. for Maven dependencies `dependency=mvn:org.my:app:1.0` |
| |
| |env |
| |Set an environment variable in the integration container, e.g. `env=MY_VAR=my-value` |
| |
| |label |
| |Add a label to the integration pod, e.g., `label=my.company=hello` |
| |
| |name |
| |The integration name |
| |
| |open-api |
| |Add an OpenAPI v2 spec (file path) |
| |
| |profile |
| |Trait profile used for deployment |
| |
| |property |
| |Add a camel property |
| |
| |property-file |
| |Bind a property file to the integration, e.g. `property-file=integration.properties` |
| |
| |resource |
| |Add a resource |
| |
| |trait |
| |Configure a trait, e.g. `trait=service.enabled=false` |
| |
| |=== |