{"id":284,"date":"2026-03-10T15:03:30","date_gmt":"2026-03-10T14:03:30","guid":{"rendered":"https:\/\/test.craftcode.be\/de-apache-camel-experience\/"},"modified":"2026-06-08T12:55:38","modified_gmt":"2026-06-08T10:55:38","slug":"de-apache-camel-experience","status":"publish","type":"post","link":"https:\/\/craftcode.be\/nl\/de-apache-camel-experience\/","title":{"rendered":"De Apache Camel Experience"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Je vraagt je misschien af waarom er begin 2022 nog geschreven wordt over file transfers. Newsflash: SFTP wordt nog altijd enorm veel gebruikt en dat zal waarschijnlijk nog jaren zo blijven.<br\/> <br\/>Spring-gebruikers zullen misschien andere libraries aanraden of rechtstreeks met SFTP-adapters werken, maar persoonlijk blijft <a href=\"https:\/\/camel.apache.org\/\" target=\"_blank\" rel=\"noopener\">Apache Camel<\/a> een erg aangename oplossing om mee te werken. Daarom werd het de voorbije jaren regelmatig gebruikt in verschillende projecten.<br\/> <br\/>Deze blog is vooral bedoeld als korte introductie, want rond Apache Camel bestaat enorm veel documentatie. De code van het project is terug te vinden op onz<a href=\"https:\/\/github.com\/vangorpdirk\/apachecamel\" target=\"_blank\" rel=\"noopener\">e GitHub-accou<\/a>nt.    <\/p>\n\n<h2 class=\"wp-block-heading has-primary-color has-text-color has-link-color wp-elements-148372ef0bb186ed5757a2a72f923623\">Dependencies<\/h2>\n\n<p class=\"wp-block-paragraph\">Omdat Apache Camel veel dependencies bevat, volgt hieronder eerst een overzicht van degene die het vaakst gebruikt worden. <\/p>\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"485\" height=\"340\" src=\"https:\/\/craftcode.be\/app\/uploads\/2026\/03\/CraftCode_blog_CamelApache_camel_dependencies.png\" alt=\"\" class=\"wp-image-140\" srcset=\"https:\/\/craftcode.be\/app\/uploads\/2026\/03\/CraftCode_blog_CamelApache_camel_dependencies.png 485w, https:\/\/craftcode.be\/app\/uploads\/2026\/03\/CraftCode_blog_CamelApache_camel_dependencies-300x210.png 300w\" sizes=\"auto, (max-width: 485px) 100vw, 485px\" \/><\/figure>\n\n<p class=\"wp-block-paragraph\">Voor Spring Boot-gebruikers die Camel voornamelijk inzetten voor file transfers van en naar een filesysteem, zijn dit de meest voorkomende dependencies.<br\/>De laatste library, Camel Swagger, wordt gebruikt voor het exposen van REST-services en API\u2019s. In dit voorbeeld wordt echter vooral de inbegrepen commons library gebruikt om een string te tellen.<br\/><br\/>Dat toont meteen \u00e9\u00e9n van de sterke punten van Apache Camel: de extra functionaliteiten die eenvoudig beschikbaar zijn binnen het Apache-ecosysteem.<br\/>Een goed voorbeeld daarvan is PGP-encryptie en -decryptie.<br\/><br\/>Encryptie is een standaardpraktijk wanneer bestanden tussen systemen verplaatst worden. Vaak vereist dat complexe code of libraries zoals Bouncy Castle om PGP-bestanden te versleutelen. Met Apache Camel wordt dat verrassend eenvoudig.<br\/>Hiervoor moet enkel de camel-crypto library toegevoegd worden.      <\/p>\n\n<h2 class=\"wp-block-heading has-primary-color has-text-color has-link-color wp-elements-fee1316ea2f55fc1077704335cf2d4bf\">SFTP<\/h2>\n\n<p class=\"wp-block-paragraph\">Wie deze demo lokaal wil testen of liever met een eigen development-SFTP werkt, kan eenvoudig een lokale SFTP-server opzetten met Docker. <\/p>\n\n<p class=\"wp-block-paragraph\">De volledige setup wordt hier niet stap voor stap uitgelegd, maar de tutorial van Tobias Wissmueller biedt een korte en duidelijke <a href=\"https:\/\/itnext.io\/using-a-local-sftp-server-for-testing-659daaa0290a\" target=\"_blank\" rel=\"noopener\">handleiding om in enkele minuten een dockerized SFTP-server<\/a> op te zetten. <\/p>\n\n<p class=\"wp-block-paragraph\">Daarnaast kan uiteraard ook gewoon gewerkt worden met een lokaal filesysteem zonder SFTP. Verderop volgt nog een eenvoudig voorbeeld daarvan.<\/p>\n\n<h2 class=\"wp-block-heading has-primary-color has-text-color has-link-color wp-elements-02d18c1202af6a6b00c383d01575ae8c\">Get your camel on<\/h2>\n\n<p class=\"wp-block-paragraph\">Om te starten moet eerst een route aangemaakt worden die het proces opstart.<br\/>Hiervoor wordt een klasse voorzien met de annotatie @Component, waarna deze klasse RouteBuilder uitbreidt. Binnen de verplichte configure-methode kan vervolgens het volledige pad opgebouwd worden.    <\/p>\n\n<p class=\"wp-block-paragraph\">In dit voorbeeld worden de paden ingesteld via application.properties, zodat ze eenvoudig aangepast kunnen worden zonder codewijzigingen. Uiteraard kunnen routes ook rechtstreeks in het pad zelf gedeclareerd worden.<br\/><br\/>Voor deze korte demo wordt exception handling bewust niet toegevoegd, al blijft het uiteraard aanbevolen om exceptions altijd correct af te handelen.<br\/><br\/>In het voorbeeld wordt gebruikgemaakt van \u00e9\u00e9n van de bekendste filmscripts aller tijden: Pulp Fiction.  <\/p>\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"84\" src=\"https:\/\/craftcode.be\/app\/uploads\/2026\/03\/CraftCode_blog_CamelApache_camel_routes_1-1024x84.png\" alt=\"\" class=\"wp-image-141\" srcset=\"https:\/\/craftcode.be\/app\/uploads\/2026\/03\/CraftCode_blog_CamelApache_camel_routes_1-1024x84.png 1024w, https:\/\/craftcode.be\/app\/uploads\/2026\/03\/CraftCode_blog_CamelApache_camel_routes_1-300x24.png 300w, https:\/\/craftcode.be\/app\/uploads\/2026\/03\/CraftCode_blog_CamelApache_camel_routes_1-768x63.png 768w, https:\/\/craftcode.be\/app\/uploads\/2026\/03\/CraftCode_blog_CamelApache_camel_routes_1.png 1189w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n<p class=\"wp-block-paragraph\">De applicatie pollt elke vijf seconden een folder op de SFTP-server, haalt het bestand op en telt hoe vaak het woord \u201cFuck\u201d voorkomt. Vervolgens wordt het bestand verplaatst naar de out-folder op de SFTP-server.<br\/><br\/>Misschien niet de meest nuttige use case &#8211; het resultaat kan je tenslotte gewoon googelen &#8211; maar de basisprincipes zijn aanwezig. <\/p>\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"822\" height=\"84\" src=\"https:\/\/craftcode.be\/app\/uploads\/2026\/03\/CraftCode_blog_CamelApache_camel_routes_2.png\" alt=\"\" class=\"wp-image-142\" srcset=\"https:\/\/craftcode.be\/app\/uploads\/2026\/03\/CraftCode_blog_CamelApache_camel_routes_2.png 822w, https:\/\/craftcode.be\/app\/uploads\/2026\/03\/CraftCode_blog_CamelApache_camel_routes_2-300x31.png 300w, https:\/\/craftcode.be\/app\/uploads\/2026\/03\/CraftCode_blog_CamelApache_camel_routes_2-768x78.png 768w\" sizes=\"auto, (max-width: 822px) 100vw, 822px\" \/><\/figure>\n\n<p class=\"wp-block-paragraph\">Meer dan alleen file transfers<br\/>Deze demo is uiteraard slechts een korte introductie om de mogelijkheden van Apache Camel te tonen.<br\/><br\/>Binnen een echte Apache Camel-omgeving zijn nog veel meer functionaliteiten beschikbaar:<br\/>\u00b7 uitgebreide integratiemogelijkheden,<br\/>\u00b7 encryptie en decryptie,<br\/>\u00b7 polling,<br\/>\u00b7 routing,<br\/>\u00b7 transformaties,<br\/>\u00b7 messaging,<br\/>\u00b7 etc,.<br\/><br\/>Maar voorlopig is vooral dit belangrijk: Zoek je een gebruiksvriendelijke Java-library voor SFTP-polling en file transfers? Dan is Apache Camel absoluut het bekijken waard.  <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ge\u00efnspireerd door de feestdagen leek dit het perfecte moment voor een kerstthema-blogpost voor alle Java-liefhebbers. Geen kerstman deze keer, maar wel een verhaal over de kamelen waarop de drie wijzen naar Bethlehem reisden. <br \/>Of\u2026 toch min of meer. Eigenlijk gaat het over Apache Camel en de handige mogelijkheden die deze library biedt voor het verplaatsen van bestanden.   <\/p>\n","protected":false},"author":2,"featured_media":283,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[55],"tags":[57,72],"class_list":["post-284","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-back-end","tag-integratie"],"acf":[],"_links":{"self":[{"href":"https:\/\/craftcode.be\/nl\/wp-json\/wp\/v2\/posts\/284","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/craftcode.be\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/craftcode.be\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/craftcode.be\/nl\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/craftcode.be\/nl\/wp-json\/wp\/v2\/comments?post=284"}],"version-history":[{"count":1,"href":"https:\/\/craftcode.be\/nl\/wp-json\/wp\/v2\/posts\/284\/revisions"}],"predecessor-version":[{"id":285,"href":"https:\/\/craftcode.be\/nl\/wp-json\/wp\/v2\/posts\/284\/revisions\/285"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/craftcode.be\/nl\/wp-json\/wp\/v2\/media\/283"}],"wp:attachment":[{"href":"https:\/\/craftcode.be\/nl\/wp-json\/wp\/v2\/media?parent=284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/craftcode.be\/nl\/wp-json\/wp\/v2\/categories?post=284"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/craftcode.be\/nl\/wp-json\/wp\/v2\/tags?post=284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}