This is an automated email from the ASF dual-hosted git repository. marat pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
The following commit(s) were added to refs/heads/main by this push: new 55734dd Saas feature45 (#444) 55734dd is described below commit 55734dd4b9c896a7ed3ed895979354be78b9f0a5 Author: Marat Gubaidullin <marat.gubaidul...@gmail.com> AuthorDate: Wed Aug 3 11:18:20 2022 -0400 Saas feature45 (#444) * Fix issue with Postman Demo * Postman localhost * Postman Demo --- .../docker-compose.yaml | 0 .../{project => docker-compose}/postgres_db.sql | 0 .../postman/{project => docker-compose}/start.sh | 0 karavan-demo/postman/docs/README.md | 18 +- karavan-demo/postman/docs/builder.png | Bin 143031 -> 0 bytes karavan-demo/postman/docs/deploy.png | Bin 129412 -> 0 bytes .../postman/project/application.properties | 20 +- karavan-demo/postman/project/postman.yaml | 333 ++++++++------------- 8 files changed, 145 insertions(+), 226 deletions(-) diff --git a/karavan-demo/postman/project/docker-compose.yaml b/karavan-demo/postman/docker-compose/docker-compose.yaml similarity index 100% rename from karavan-demo/postman/project/docker-compose.yaml rename to karavan-demo/postman/docker-compose/docker-compose.yaml diff --git a/karavan-demo/postman/project/postgres_db.sql b/karavan-demo/postman/docker-compose/postgres_db.sql similarity index 100% rename from karavan-demo/postman/project/postgres_db.sql rename to karavan-demo/postman/docker-compose/postgres_db.sql diff --git a/karavan-demo/postman/project/start.sh b/karavan-demo/postman/docker-compose/start.sh similarity index 100% rename from karavan-demo/postman/project/start.sh rename to karavan-demo/postman/docker-compose/start.sh diff --git a/karavan-demo/postman/docs/README.md b/karavan-demo/postman/docs/README.md index fc9b2b6..340fd00 100644 --- a/karavan-demo/postman/docs/README.md +++ b/karavan-demo/postman/docs/README.md @@ -15,12 +15,12 @@ cd ../artemis ./prepare-docker.sh --from-release --artemis-version 2.22.0 cd _TMP_/artemis/2.22.0 docker build -f ./docker/Dockerfile-adoptopenjdk-11 -t artemis-adoptopenjdk-11 . -cd ../../../../project ``` For MacOS users, in case of `tree command not found` error, install tree `brew install tree` ### Start environment ``` +cd docker-compose docker-compose up ``` @@ -54,7 +54,8 @@ Send message to `payments` queue 2. Apache Camel [Karavan](https://marketplace.visualstudio.com/items?itemName=camel-karavan.karavan) extension installed 3. [Jbang](https://www.jbang.dev/download/) installed 4. OpenShift 4.9+ cluster up and running -4. OpenShift 4.9+ CLI installed +5. OpenShift 4.9+ CLI installed +6. Apache Camel Karavan installed in OpenShift ### Install AMQ and AMQ Streams Operators @@ -73,14 +74,13 @@ oc apply -k instances -n karavan ``` ### Package, build and deploy project -1. Open Project builder -![builder](builder.png) +1. Open Karavan Application +2. Create project Postman +3. Create integration postman +4. Replace integration code with [postman.yaml](project/postman.yaml) +5. Set Kamelets configuration according their services in Openshift +6. Click `Run` button -2. Configure Project and click Start -![deploy](deploy.png) -``` - -``` ### Publish parcel ``` diff --git a/karavan-demo/postman/docs/builder.png b/karavan-demo/postman/docs/builder.png deleted file mode 100644 index 880bf92..0000000 Binary files a/karavan-demo/postman/docs/builder.png and /dev/null differ diff --git a/karavan-demo/postman/docs/deploy.png b/karavan-demo/postman/docs/deploy.png deleted file mode 100644 index 67b343f..0000000 Binary files a/karavan-demo/postman/docs/deploy.png and /dev/null differ diff --git a/karavan-demo/postman/project/application.properties b/karavan-demo/postman/project/application.properties index 1caacea..33e323c 100644 --- a/karavan-demo/postman/project/application.properties +++ b/karavan-demo/postman/project/application.properties @@ -1,5 +1,15 @@ -kafka-brokers=localhost:9092 -postgres-server=localhost -jms-broker=tcp://localhost:61616 -mqtt-broker=tcp://localhost:1883 -%dev.mqtt-broker=tcp://localhost:1883 +camel.jbang.project-id=postman +camel.jbang.project-name=postman +camel.jbang.project-description=Postman Demo +camel.jbang.gav=org.camel.karavan.demo:postman:1.0.0 +camel.jbang.runtime=quarkus +camel.jbang.quarkusVersion=2.11.1.Final +camel.jbang.dependencies=camel:microprofile-health,mvn:io.quarkus:quarkus-container-image-jib,mvn:io.quarkus:quarkus-openshift +camel.health.enabled=true +camel.health.exposure-level=full +quarkus.kubernetes-client.trust-certs=true +quarkus.container-image.group=karavan +quarkus.container-image.name=postman +quarkus.openshift.route.expose=false +quarkus.openshift.part-of=postman +quarkus.openshift.replicas=1 \ No newline at end of file diff --git a/karavan-demo/postman/project/postman.yaml b/karavan-demo/postman/project/postman.yaml index 45a2dc0..80a7124 100644 --- a/karavan-demo/postman/project/postman.yaml +++ b/karavan-demo/postman/project/postman.yaml @@ -4,221 +4,130 @@ metadata: name: Postman Demo spec: flows: - - dslName: RestDefinition - post: - - dslName: PostDefinition - stepName: post - to: 'direct:post' - inArray: true - inSteps: false - stepName: rest - path: /parcels - consumes: application/json - produces: application/json - - dslName: RouteDefinition - stepName: route - from: - uri: 'direct:post' - steps: - - dslName: LogDefinition - stepName: log - message: 'Received: ${body}' - inArray: true - inSteps: true - - steps: - - uri: 'kamelet:kafka-not-secured-sink' - dslName: ToDefinition - stepName: to - parameters: - topic: parcels - bootstrapServers: 'localhost:9091' - inArray: true - inSteps: true - - uri: 'kamelet:postgresql-sink' - dslName: ToDefinition - stepName: to - parameters: - serverName: localhost - serverPort: '5432' - username: postgres - password: postgres - databaseName: demo - query: >- - INSERT INTO parcels (id,address) VALUES (:#id,:#address) ON - CONFLICT (id) DO NOTHING - inArray: true - inSteps: true - dslName: MulticastDefinition - stepName: multicast - aggregationStrategy: >- - #class:org.apache.camel.processor.aggregate.UseOriginalAggregationStrategy - parallelProcessing: true - streaming: true - inArray: true - inSteps: true - dslName: FromDefinition - stepName: from - id: post - - dslName: RouteDefinition - stepName: route - from: - uri: 'kamelet:jms-apache-artemis-source' - steps: - - uri: 'xj:identity' - dslName: ToDefinition - stepName: to - parameters: - transformDirection: XML2JSON - inArray: true - inSteps: true - - uri: 'kamelet:kafka-not-secured-sink' - dslName: ToDefinition - stepName: to - parameters: - topic: payments - bootstrapServers: 'localhost:9091' - inArray: true - inSteps: true - dslName: FromDefinition - stepName: from - parameters: - destinationType: queue - destinationName: payments - brokerURL: 'tcp://localhost:61616' - id: payment - - dslName: RouteDefinition - stepName: route - from: - uri: 'kamelet:kafka-not-secured-source' - steps: - - dslName: LogDefinition - stepName: log - message: 'Aggegating: ${body}' - inArray: true - inSteps: true - - dslName: UnmarshalDefinition - stepName: unmarshal - json: - dslName: JsonDataFormat - library: jackson - inArray: true - inSteps: true - - steps: - - dslName: ChoiceDefinition - stepName: choice - when: - - steps: - - dslName: MarshalDefinition - stepName: marshal - json: - dslName: JsonDataFormat - library: jackson - inArray: true - inSteps: true - - dslName: LogDefinition - stepName: log - message: 'Send to MQTT : ${body}' - inArray: true - inSteps: true - - uri: 'kamelet:mqtt-sink' - dslName: ToDefinition - stepName: to - parameters: - topic: deliveries - brokerUrl: 'tcp://localhost:61616' - inArray: true - inSteps: true - dslName: WhenDefinition - stepName: when - expression: - dslName: ExpressionDefinition - stepName: expression - groovy: - dslName: GroovyExpression - expression: >- - body.find { it.containsKey('status') }.status == - 'confirmed' - inArray: true - inSteps: false - otherwise: - steps: - - dslName: SetBodyDefinition - stepName: setBody - expression: - dslName: ExpressionDefinition - stepName: expression - groovy: - dslName: GroovyExpression - expression: 'body.find { it.containsKey(''status'') } ' - inArray: true - inSteps: true - - dslName: MarshalDefinition - stepName: marshal - json: - dslName: JsonDataFormat - library: jackson - inArray: true - inSteps: true - - dslName: LogDefinition - stepName: log - message: 'Send to database: ${body}' - inArray: true - inSteps: true - - uri: 'kamelet:postgresql-sink' - dslName: ToDefinition - stepName: to + - rest: + post: + - to: direct:post + path: /parcels + consumes: application/json + produces: application/json + - route: + from: + uri: direct:post + steps: + - log: + message: 'Received: ${body}' + - multicast: + steps: + - to: + uri: kamelet:kafka-not-secured-sink + parameters: + topic: parcels + bootstrapServers: localhost:9092 + - to: + uri: kamelet:postgresql-sink parameters: serverName: localhost serverPort: '5432' username: postgres password: postgres databaseName: demo - query: 'UPDATE parcels set status = ''CANCELED'' WHERE id = :#id' - inArray: true - inSteps: true - dslName: OtherwiseDefinition - stepName: otherwise - inArray: true - inSteps: true - dslName: AggregateDefinition - aggregationStrategy: aggregator - stepName: aggregate - completionSize: 2 - correlationExpression: - dslName: ExpressionSubElementDefinition - stepName: expressionSubElement - groovy: - dslName: GroovyExpression - expression: body.get('id') - inArray: true - inSteps: true - dslName: FromDefinition - stepName: from - parameters: - topic: 'parcels,payments' - bootstrapServers: 'localhost:9091' - autoCommitEnable: true - consumerGroup: postman - id: aggregator - - dslName: RouteDefinition - stepName: route - from: - uri: 'kamelet:mqtt-source' - steps: - - dslName: LogDefinition - stepName: log - message: 'Delivery: ${body}' - inArray: true - inSteps: true - dslName: FromDefinition - stepName: from - parameters: - topic: deliveries - brokerUrl: 'tcp://localhost:61616' - - dslName: Beans - beans: - - dslName: NamedBeanDefinition - name: aggregator - type: org.apache.camel.processor.aggregate.GroupedBodyAggregationStrategy - inArray: true - inSteps: false + query: >- + INSERT INTO parcels (id,address) VALUES + (:#id,:#address) ON CONFLICT (id) DO NOTHING + aggregationStrategy: >- + #class:org.apache.camel.processor.aggregate.UseOriginalAggregationStrategy + parallelProcessing: true + streaming: true + id: post + - route: + from: + uri: kamelet:jms-apache-artemis-source + steps: + - to: + uri: xj:identity + parameters: + transformDirection: XML2JSON + - to: + uri: kamelet:kafka-not-secured-sink + parameters: + topic: payments + bootstrapServers: localhost:9092 + parameters: + destinationType: queue + destinationName: payments + brokerURL: tcp://localhost:61616 + id: payment + - route: + from: + uri: kamelet:kafka-not-secured-source + steps: + - log: + message: 'Aggegating: ${body}' + - unmarshal: + json: + library: jackson + - aggregate: + steps: + - choice: + when: + - expression: + groovy: + expression: >- + body.find { it.containsKey('status') }.status == + 'confirmed' + steps: + - marshal: + json: + library: jackson + - log: + message: 'Send to MQTT : ${body}' + - to: + uri: kamelet:mqtt-sink + parameters: + topic: deliveries + brokerUrl: tcp://localhost:1883 + otherwise: + steps: + - setBody: + expression: + groovy: + expression: 'body.find { it.containsKey(''status'') } ' + - marshal: + json: + library: jackson + - log: + message: 'Send to database: ${body}' + - to: + uri: kamelet:postgresql-sink + parameters: + serverName: localhost + serverPort: '5432' + username: postgres + password: postgres + databaseName: demo + query: >- + UPDATE parcels set status = 'CANCELED' WHERE + id = :#id + aggregationStrategy: aggregator + completionSize: 2 + correlationExpression: + groovy: + expression: body.get('id') + parameters: + topic: parcels,payments + bootstrapServers: localhost:9092 + autoCommitEnable: true + consumerGroup: postman + id: aggregator + - route: + from: + uri: kamelet:mqtt-source + steps: + - log: + message: 'Delivery: ${body}' + parameters: + topic: deliveries + brokerUrl: tcp://localhost:1883 + - beans: + - name: aggregator + type: org.apache.camel.processor.aggregate.GroupedBodyAggregationStrategy \ No newline at end of file