Who am I?
  • 19🐱🐱 Crazy Cat Lady
  • Free and Open Source Advocate
  • 2008 Software Engineer
  • GeoSpatial world
  • 2009 Dijkstra A* Witch
  • 2012 Metadata Wrangler
  • 2013 OSGeo Charter Member
  • 2017-2019 OSGeo President
  • 2016 Women in Tech
  • Senior Software Engineer at RedHat
  • 2019 Integration Druid
  • 2019 Apache Camel contributor
  • 2020 Apache Software Foundation
  • 2021 Lead Kaoto Development
  • Java Champion

Functionality

 Enterprise Integration Patterns

 Wide range of supported formats and protocols

 Extensibility

Usability

 Multiple DSL

 Good Documentation and tutorials

 Footprint

License

 Technical Support

 
                //Start with a timer that executes the operation every 10 seconds
                from("timer:java?period=10000")
                      //Access the CSV file which can be on an api or storage device
                      .to("{{source.csv}}")
                      //unmarshal and split the workflow per row 
                      .unmarshal().split(body()).streaming()
                      //process each row
                      //the process is defined in a separated file
                      .process(processCsv)
                      //push the results to the following API
                      .to("https://nominatim.openstreetmap.org/reverse")
                      //the returned XML is also processed
                      .unmarshal().jacksonxml()
                      //again, the processor is defined in a separated file
                      .process(processXML)
                      //Prepare an SQL query based on the result of the process
                      .setBody().simple("SELECT info FROM descriptions WHERE id like '${exchangeProperty.pollutant}'")
                      //send the SQL query to the database
                      .to("jdbc:postgresBean?readSize=1")
                      //collect the result and process it
                      .process(processDB)
                      //reunite the parallel streams that started on the csv processing
                      .aggregate(constant(true), aggregationStrategy)
                      .completionSize(5)
                      //given the list of outputs per row in csv, process it
                      .process(buildGeoJSON)
                      //store the result in another database
                      .to("mongodb:mongoBean?database=example&collection=mySpatialObjects&operation=insert")
                 
               

K-Native Camel: Camel K

Kamelets: Kamel Route Snippets

 
              apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: telegram-text-source-to-kafka
spec:
  source:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: telegram-text-source
    properties:
      botToken: the-token-here
  sink:
    ref: (1)
      kind: KafkaTopic
      apiVersion: kafka.strimzi.io/v1beta1
      name: my-topic
              
            

Low Code / No Code Integration Development

Full explanation and more videos at https://kaoto.io/

Full explanation and more videos at https://kaoto.io/

Any Questions?




You can find me as @delawen on many platforms.



The slides are on