Het IKEA-concept: de veranderde rol van het integratieplatform

IKEA, vele lopen weg met hun meubels. Althans, met het bouwpakket… Ze lopen er mee weg, zowel letterlijk als figuurlijk. Anderen vinden het juist vreselijk. Maar zelfs vele ‘haters’ die shortcuts in de showroom nemen, hebben bewondering voor het IKEA-concept. Maar wat is het IKEA-concept? En wat heeft dit met data-integratie te maken?

Economieles

Misschien kennen sommige het nog van economieles; de drie strategieën van Porter. Dit zijn verschillende manieren waarmee bedrijven competitief kunnen zijn in de markt. Dit kan op kosten, differentiatie (bijvoorbeeld door goede service/kwaliteit) of focus.

IKEA’s concept valt moeilijk onder één van de drie te plaatsen. Het wil scherpe prijzen bieden, maar tegelijkertijd ook design, kwaliteit en service. IKEA heeft wellicht niet de allerhoogste kwaliteit, maar het kan zich bij hoge omzetten eenvoudigweg niet permitteren als bijvoorbeeld alle keukenkastjes het snel begeven.

IKEA zelf spreekt van “een breed scala aan goed ontworpen, functionele woninginrichtingsproducten aanbieden, tegen prijzen die zo laag zijn dat zoveel mogelijk mensen ze kunnen betalen.”

Maar zoals op alle bedrijfswebsites is dat weinigzeggend. Meer heb je aan dit artikel op Frankwatching.

Bij IKEA gaat het dus niet alleen om kosten en service, maar vooral om de psychologie van de klant en hoe je die een totaalervaring geeft.

Als je zoals in het artikel naar deze ervaring kijkt, blijkt dat alles en dan echt ook alles doordacht is. Van het softijs tot de IKEA-tas (lekker groot) en van Småland tot de Zweedse gehaktballetjes. IKEA blijft steeds verder aan zijn concept schaven, want klanten zijn natuurlijk niet gek.

Verschillende concepten

Een aantal unieke aspecten van IKEA concept zijn een showroom waar volledige woon- of slaapkamers staan opgesteld. Klanten kunnen even lekker zitten, liggen, keuken kastjes open en dicht zetten zonder dat er een verkoper in de nek hijgt. Vervolgens kan je aan het einde de gewenste item gelijk meenemen en thuis zelf in elkaar zetten. En in elkaar zetten is dan ook echt makkelijk.

IKEA is natuurlijk niet alleen op de markt, ze concurreren met meer traditionele concepten. Deze sluiten vaak dichter aan bij Porters strategieën. Bijvoorbeeld een meubelzaak die hoge kwaliteit meubelen levert, samen met de klant de inrichting ontwerpt en deze thuis aflevert en installeert. Denk aan Eijerkamp. Zij gaan uit van een differentiatie strategie.

Aan de andere kant van het spectrum staan de Doe-Het-Zelf zaken. Hornbach wil bijvoorbeeld scherpe prijzen en laat de klant zelf alles bouwen precies zoals die zelf wilt. De klant, als hij of zij de vaardigheden bezit, kan alles op maat maken precies zoals hij of zij voor ogen heeft en is dan uiteindelijk het goedkoopste uit.

Traditionele integratie markt

Wat heeft het hele verhaal over meubelconcepten nu in godsnaam met data-integratie te maken? Eigenlijk heel veel. In deze markt zie je dat traditioneel dezelfde strategiën worden gevolgd als bij Porter, maar dat er nieuwe IKEA-achtige concepten in opkomst zijn.

De allereerste integratieproducten in de jaren negentig zaten met name in de differentiatie hoek. Zij wilden zich onderscheiden van applicatie producten met diens beperkte integratiemogelijkheden. Centraal kwam middleware te staan.

De verkoop ging nog heel traditioneel. De leverancier kwam bij de klant een demonstratie geven van de belangrijkste functionaliteit. Was de klant geinteresseerd dan ging het vervolgens in gesprek over hoe die de software wilde inzetten. Door sales technici werd vervolgens een implementatieplan voor de inrichting uitgewerkt.

Doel van een nieuwe inrichting was het scheiden van de applicatielaag van de integratielaag. Dit had weer het doel om data barrièrevrij en betrouwbaar door de organisatie te laten lopen. Zulke integraties draaien op het integratie platform. De integratielaag is dus een verzameling van integraties boven op dit platform.

Om een integratie platform door een organisatie in te zetten is er natuurlijk wel software nodig. Eind jaren negentig zijn de meeste integratiepakketten ontstaan. Zij bundelden meerdere integratiefuncties in één suite.

Een integratiefunctie kan bijvoorbeeld “transport” door middel van een broker zijn of “integration patterns” via een ESB. Wanneer een integratiefunctie is geïmplementeerd in een integratieplatform wordt op organisatieniveau ook wel van integratie capabilities gesproken.

Tot deze nieuwe software op de markt kwamen waren de meeste koppelingen point-to-point met behulp van scripts, adapters, of andere programmatuur. Er werd vooral rechtstreeks vanuit code gewerkt. Eigenlijk net zoals er nu nog veel maatwerk applicaties worden ontwikkeld.

Een traditioneel platform

Omdat er steeds meer applicaties en integraties ontstonden werd er gezocht naar een snellere en meer uniforme manier om te koppelen. Allereerst ontstonden dus de ESB’s (Enterprise Services Bus). In het eerst decenium van deze eeuw werden ze mateloos populair. Bij een ESB verwerken 1 of meerde services de data en vormen samen de integratie. Dit kunnen bijvoorbeeld een mapping, routing of filter service zijn.

Op een ESB zijn services zoveel mogelijk herbruikbaar en configureerbaar. Ook werd het in de meeste software mogelijk om zelf services in code te schrijven (custom services). Vrijwel alle ESB’s, zoals Tibco, Sonic, Websphere, Webmethods en Oracle Fusion, zijn Java gebaseerd. BizTalk (.Net) en InterSystems (C) zijn enkele van de uitzonderingen.

De ESB software werd vaak uitgebreid met een broker die als transportlaag fungeerde. Later werden SOAP services, API’s, Connectors etc. ook door de pakketten ondersteund. Zo kregen deze integration suites steeds meer modules (capabilities).

Een traditioneel integratieplatform is gebaseerd op een zogenoemde integratie suite (soms hier en daar nog wat aangevuld met wat maatwerk en tools). Zo’n suite bundelt meerdere producten samen. Doordat deze integration suites steeds meer capabilities kregen zijn deze pakketten steeds zwaarder, duurder en complexer geworden. Bij enterprise organisaties zijn desondanks redelijk wat succesvolle implementaties geweest, maar andere organisaties vermeden deze pakketten daarom.

Samengevat bouwden software vendors op basis van code (meestal Java) integratie modules die samen een integration suite vormen. Partners van de leveranciers en klanten maakten hier een integratie platform van. Daarop bouwden en draaien klanten de integraties.

Open source integratieplatform

De complexiteit, kennis en kosten zijn in de loop van de jaren een steeds groter issue geworden. Een ander nadeel van integratiepakketten is dat de softwareleveranciers soms lastig de technologische ontwikkelingen kunnen bijbenen. Dus wellicht zijn de queueing broker en ESB capabilities sterk ontwikkelt, maar API en streaming broker niet (of andersom).

Veel tech-reuzen hebben daarom niet gekozen voor integratiesuites, maar hebben zelf tooling en frameworks ontwikkeld. Bijvoorbeeld de volgende brokers:

  • Kafka (Oorspronkelijk ontwikkelt bij LinkedIn)
  • Pulsar (Oorspronkelijk ontwikkelt bij Yahoo)
  • ActiveMQ (Oorspronkelijk ontwikkelt bij Fuse/Red Hat)
  • RocketMQ (Oorspronkelijk ontwikkelt bij Ali Baba)
  • TubeMQ (Oorspronkelijk ontwikkelt bij Tencent)

Vaak zijn deze software tools en frameworks moderner en geavanceerder dan de modules in de software suites. Veel van deze initiatieven zijn overgegaan naar open source projecten. Alle 5 genoemde brokers vallen bijvoorbeeld tegenwoordig onder de Apache Foundation. Hiermee zijn deze open source tools en framework breed toegankelijk geworden.

Open source stichtingen als de Apache Foundation, the Eclipse Foundation en Linux Foundation zijn de bouwmarkten van de digitale wereld geworden. Dezelfde reserveringen voor Doe-Het-Zelf projecten gelden hier dan ook. Degene die de keuzes maakt, het integratie platform samenstelt en de integraties ontwikkelt moet echt weten wat hij doet. Anders krijg je al snel halve oplossingen voor het programma “Help, mijn man is IT’er?”.

In de software laag is de integratie suite daarbij vervangen door open source integratie tools en frameworks. Als je het goed doet bieden deze open source software ook veel mogelijkheden. Bedrijven zijn vrij om zelf de tools en frameworks te kiezen in plaats van een hele suite bij één leverancier. Als er iets niet werkt, kunnen ze hetzij volledig zelfstandig, hetzij in samenwerking met het upstream project een patch indienen.

Verschillende bedrijven zoals Red Hat hebben gekozen verschillende Apache Projecten te bundelen en commercieel beschikbaar te stellen. Red Hat Fuse bestaat bijvoorbeeld uit:

  • Apache Camel (ESB Framework)
  • Apache ActiveMQ (Broker)
  • Apache CXF (Webservices)

Red Hat garandeert dat de versies goed met elkaar werken en biedt regelmatig patches aan. Daarnaast bieden ze support en trainingen.

Doordat er voor elke integratie capability een ander open source tool of framework wordt gebruikt, kan de integratielaag makkelijker evalueren. Als bijvoorbeeld de broker verouderd is dan wissel je die om, maar laat je andere capabilities intact.

Moderne integratie teams

Moderne integratieteams, die traditioneel zowel de integraties leveren als het platform opstellen, hebben tegenwoordig te maken met:

  • Opbouw van het integratieplatform op basis van meerdere frameworks en tools (in plaats van 1 suite)
  • Het integratieplatform wordt verwacht dichter bij de business te staan.

Het eerste is vooral low-level, terwijl de tweede vooral low-code is. Het is een enorme uitdaging om beide dichter bij elkaar te brengen. Dus EN een goed platform op te zetten EN veel integraties op te leveren.

Traditioneel moesten integratiespecialisten al relatief veel tijd besteden aan het opzetten/schalen/onderhouden van het platform. Doordat er tegenwoordig een veeltal open source tools, frameworks en cloud services worden gebruikt, is dit nog moeilijker geworden.

De open source projecten bieden dus wel heel krachtige en flexibele software, maar het is lastiger hier één platform van te maken. De management tooling die wordt aangeboden is daarnaast vaak zeer beperkt en zeer technisch van insteek.

Aan de andere kant wordt er verwacht dat er sneller integraties kunnen worden opgeleverd, en dat andere teams ook meer zelf op het integratie platform kunnen doen. Dit levert een spagaat op voor veel integratieteams die aan de ene kant een stabiel en betrouwbaar platform willen leveren met voldoende capabilities, evenals ook snel en flexibel nieuwe integraties te kunnen opleveren.

Hybride Integration platform

Open source biedt dus een uitstekende basis voor een goed integratie platform. Het is echter lastig om een hybride integratie platform te maken die in de verschillende capabilities voorziet.

Daarom is er niet alleen een beweging, zoals Red Hat doet om open source tooling en frameworks te bundelen, maar om het integratie platform makkelijker samen te stellen en hier eenvoudiger integraties op te kunnen maken.

De showroom van dit concept is de cloud. In plaats dat je met verkopers en consultants gaat spreken of zelf in elkaar zet, kan je in de cloud verschillende trials van integratie functies uitproberen. Zo kan je verschillende brokers met elkaar vergelijken en uitproberen welke bij je past. Het idee is ook dat je precies betaalt zoveel als je nodig hebt (Pay by use).

De verschillende integratie capabilities worden dus niet als één suite gekocht, maar als aparte modules gekozen. Deze kunnen zowel technologisch als van leverancier van elkaar verschillen. Alle zijn direct door de eindgebruiker zelf te gebruiken. Een concept die sterk lijkt op die van IKEA!

Een voorbeeld integratieplatform á la IKEA:

De broker en iPaas staan gewoonlijk alleen in de cloud, terwijl de gateways ook On Premisse kunnen staan.

Helaas moet gezegd worden dat Cloud vrijwel een net zo’n groot labyrinth vormt als IKEA zelf. De route en welke kosten erbij komen zijn serieuze valkuilen. Net als bij IKEA is het gevaar dat je met veel meer en heel andere dingen de showroom uitloopt als je oorspronkelijk van plan was. Daarnaast gaat het hybride platform niet alleen over de cloud, maar juist ook om cloud en on premisse met elkaar te verbinden.

Een extra laag

Ten slotte is er ook nog de ontwikkeling ontstaan dat ontwikkelaar en andere IT’ers met deze tools zelf integraties kunnen bouwen. AmazonMQ, wat gebaseerd is op de open source broker ActiveMQ, biedt niet alleen het voordeel dat het gehost wordt, maar ook dat er middelen voor de configuratie en security van de broker beschikbaar zijn.

In sommige gevallen wordt bovenop open source frameworks een heel low-code integratieplatform gebouwd. Meestal vermarkt als iPaas, integration Platform as a service. Voorbeelden van iPaas producten zijn Dell Boomi, Red Hat Fuse Online (Syndesis) en Dovetail. Laatste twee zijn gebaseerd op Apache Camel, Apache ActiveMQ en andere open source technologiën.

Deze zogenoemde iPaas (integration Platform as a Service) richten zich voornamelijk op de ESB functionaliteit, terwijl bijvoorbeeld Azure Service Bus, Amazon SQS of AmazonMQ zich op de broker functionaliteit richten. Voor al deze cloud diensten geldt dat ze gebaseerd zijn op open source frameworks en tools.

Doordat integraties in deze low-code tools in de browser ontwikkeld worden, is de developer flow ook anders. En omdat deze eenvoudiger te integreren zijn, wordt ook wel niet meer gesproken over system integrators, maar over citizen integrators. Overeenkomstig met citizens developers bij low-code platforms.

De oude en de nieuwe developer workflow:

Boven is de oude workflow om integraties te ontwikkelen. De developer installeerde de “Developer version” van een integratie suite op zijn laptop. Deze bestond vaak uit een Eclipse IDE met een plugin voor de ontwikkeling van de integraties voor die suite.

De integraties werden vervolgens op de laptop ontwikkeld en getest. Daarna werden deze gepushed naar een version control system (bijv. Subversion of Git) en gebouwd door een build server (bijv. Jenkins). Tenslotte werden ze gedeployed op de integratieserver.

In de nieuwe workflow loggen ontwikkelaars (de zogenoemde citizens integrators) direct in via de browser. Daar maken ze de integratie en deployen deze met één druk op de knop. Op de achtergrond is vaak nog een soortgelijke flow als de traditionele aan het werk, maar deze is geabstraheert van de ontwikkelaars.

Uitgang

De nieuwe wijze van het samenstellen van het integratieplatform heeft tot een nieuw concept geleid. Er is een extra laag bijgekomen, die voor hosting en management zorgen:

Een echt hybride integratie platform combineert deze lagen zodat alle capabilities beschikbaar en eenvoudig benaderbaar zijn. Samengevat vormen open source, cloud en low-code een nieuwe manier voor organisaties om een integratie platform te bouwen.

Raymond Meester

Raymond Meester

Integration Consultant & DevOps

+31 (0) 88 240 6872
r.meester@caesarexperts.nl

Assimbly 3.0

Van modulaire software naar het modulaire bedrijf

Some say that version 2.0 is the real 1.0. But where is Assimbly 2.0? From 0.1 till 1.9 this versioning scheme was closely followed. So why the ‘Microsoft-like’ move to go directly to 3.0? The version 3 number reflects 3 things:

1. Apache Camel 3

Assimbly moved to Apache Camel 3 (3.3 at this time). Camel 3 brings many improvements around the framework as Claus Ibsen blogged on the Camel website.

2. Jhipster 6

One of the biggest changes is the move of the web framework Jhipster from version 5 to 6. This updates Spring Boot, Angular and hundreds of other libraries.

3. New features

With both the latest Camel as Integration Framework and JHipster as Web Application Framework it feels like Assimbly is standing on the shoulder of giants. From there we can easily add new functionality as described later in this blog. First we shortly discuss what Assimbly does.

What is Assimbly?

Almost anyone needs data from multiple systems. Apache Camel is the most powerful integration framework in the world. It supports many protocols and has extensive documentation. It’s a perfect solution to integrate systems with each other.

One common way to create an integration is by using the Camel DSL (Domain Specific Language for writing integrations). Like for example send something from a database to a webservice. The Camel DSL makes it a lot easier to write such integrations:

from(“sql:select order from table”).to(“https://orderservice.com”)

It’s however not that easy. As you first need a CamelContext to run such routes. The context as well as the route needs to be configured. The route is wrapped in a Java class, some error handling is needed, some options are needed etc. Last, but not least the route needs to be managed (start, stopped, paused etc).

What if you don’t need to write the integration, but just configure and manage the integration in your browser?

No Java, no Maven, no IDE and no deployment. In Assimbly you can do everything within the browser. An example of SQL to HTTPS will look in Assimbly like this:


Assimbly focuses on connecting applications and other software. These are just connecting endpoints, while leaving other software (middleware, applications, databases etc) handle other application or integration logic. This makes connecting software easier for intergration specialist as well as less technological users.

What’s new?

Here is a high level overview of what’s new in version 3.0.

GUI

In Assimbly a flow connects multiple endpoints with each other. The flow page lists all these flows of the gateway. This page used to have buttons for managing flows and text with extra information about the flow.

Old flows page:


Now these two are combined to give a clearer look. Also, basic actions like getting stats and cloning, editing or deleting a flow can be done directly from this page.

New flows page:


Upgrades

Camel recently released version 3. The Assimbly Connector API is an interface on top of integration software like Camel and ActiveMQ. This API could support both Camel 2 and 3, but since there aren’t a lot of compatibility issues we decided to support version 3 from now on as the only option.

For Assimbly the main benefits are performance improvements, lower footprint, more components and support for Java 11. In the future we hope to benefit from the more modular approach of Camel 3.

Jhipster is a great framework to generate web applications. Often you only get frameworks that are part of the web application. For example the backend, the database, the frontend, the user interface and so on. Jhipster brings them all together. This leads to a full-functional web application, but also to well-structured code. With Jhipster 6 we moved to:

  • Spring Boot 2.2
  • Angular 8
  • Swagger UI v3
  • Gradle 5

These frameworks and hundreds of other library upgrades brings Java 11 support, performance improvements and better security.

Upgrading those libraries with Jhipster saves a lot of manual work, however it is also quite hard because this upgrades all libraries at once. This broke our custom code that we of course want to keep. So a lot of debugging needed to be done. Thanks to Achraf Adbib for making this happen!

Within Assimbly DocConverter (which is a subproject of Assimbly) is used for converting between different data formats. This let users define flows in XML, JSON and YAML.

In version 3.0 it also allowed calling DocConverter from a flow with special headers with a flow (as explained in the documentation). This converts the data format of the input message to XML, JSON, CSV or YAML.

Startup improvements

With all the updated frameworks we can now support Java 11, the latest long term support version of Java. In the old days of the Java world only Oracle’s Java JDK was used (and sometimes you saw IBM’s JDK). In the last few year we see a faster pace of versions and more builds. You can read more on my article on Java JDK’s.

In the old version Assimbly was only running well on Oracle JDK 8, but it was slow. With all the framework upgrades, startup fixes and JDK 11 we saw major improvements on startup time. Here are some stats on the several JDK’s:

Assimbly 1.8.0 (Jhipster 5 / Camel 2)

Jar Size: 300 MB

JDK                         Fastest startup time MemoryJDK 8 (231)               77 seconds              1610  MB
OpenJDK 11 (11.0.6) Did not run
OpenJDK 14 (14+36) Did not run
OpenJ9 11 Did not run

Jar Size: 220 MB

JDK                        Fastest startup time   MemoryJDK 8 (231)              13 seconds                1805 MB
OpenJDK 11 (11.0.6) 16 seconds 215 MB
OpenJDK 14 (14+36) 16 seconds 220 MB
OpenJ9 11 17 seconds 205 MB
GraalVM 8 (20.0) 14 seconds 1840 MB
GraalVM 11 (20.0) 14 seconds 1280 MB
Azul Zulu 8 13 seconds 1696 MB
Azul Zulu 11 13 seconds 995 MB
Azul Zulu 14 12 seconds 553 MB
Amazon Correto 8 13 seconds 1716 MB
Amazon Correto 11 14 seconds 976 MB

So in the new version Assimbly is running on any JDK without problems. Azul Zulu 14 had the fastest startup and OpenJDK 11 (hotspot) the lowest memory footprint. A native image was also created for Assimbly, but that only gained 1 or 2 seconds. This will probably improve when Spring Boot will have official support for Native Image.

Other enhancements

In Assimbly headers can be set as one or more key/value pairs. This group of headers can be (re)used within multiple flows.

The header value can be either set as constant, but now also from an expression (simple, groovy, xpath and jsonpath are supported).

 

Besides Apache Camel, Assimbly supports ActiveMQ. Both ActiveMQ Classic as ActiveMQ Artemis are supported. Flows can send or receive messages from ActiveMQ. The broker can be configured from within the browser.

Assimbly is designed with several layers in mind. At the lowest layer there is the implementation of Apache Camel and Apache ActiveMQ. On top of that there is a Java API to configure and manage Camel and ActiveMQ.

Currently, Camel 3 is the only flow implementation as Apache Camel fulfills all our needs. It’s however possible to write a custom implementation or to use other integration frameworks like for example Spring Integration. In Assimbly 3.0 the Java API, Assimbly connector, is enhanced to use 68 methods.

Assimbly connector can be seen as a convention-over-configuration library for Camel. It starts the CamelContext with things like the catalog, registry and ssl support. The connector can also be used separately from Assimbly gateway (the web application).

For example to embed in a command line application or other middleware like I recently did with Apache NiFi.

Assimbly comes as a single ‘fat’ jar file which runs on any server or laptop. The project also supports docker:

docker pull skin27/assimbly:latest

Several logging improvements has been done. Firstly the logs on startup were improved. The logged printed previously only the URL were Assimbly was running, now it prints lots of extra information like startup time, java version and so on.


Overall there is more logging for example when importing/exporting flows. It’s also now available to set the loglevel to debug or trace the flow.

Current JDK versions already support most common TLS certificates. It’s however possible to whitelist extra URL’s or upload certificates manually.

These certificates are managed centrally. This means even when there are multiple instances every instance gets all the certificates. These certificates are automatically loaded in flows.

Documentation

In Assimbly we provide contextual documentation. This means when a user selects for example the ‘File’ components it gets

  • A link to the official Camel documentation about the File component.
  • A link to the Assimbly documentation with additional examples and screenshots.
  • Placeholders for the URI syntax.
  • Info on the URI syntax in an info box.

The Assimbly wiki has now more than 50 articles. Including a quick start guide and tutorials.

What’s next?

Experimental features

We are now working on new experimental features in 3.1 (Currently alpha status):

  • Support for all Camel components
  • Modularization
  • Microservices: Running Assimbly on Kubernetes

Read more in a separate blog.

Community

Our hope is that people find Assimbly 3.0 useful. As an open source project everyone is welcome to create or discuss issues on Github.

Please star the repo on Github when you like Assimbly.

Using Camel and NiFi in one solution

Both Camel and NiFi are Apache projects. Their code is mostly written in Java and both are targeting data processing and integration. However, there are also many differences. One difference is that NiFi is a platform and Camel a framework.

 

For NiFi it means that it’s a software solution where you centrally build dataflows. The concept of dataflows let you take multiple processors to process data. Together processors form a dataflow. NiFi has around 200 processors, most of which are built-in.

Camel is mostly used at a code level. On the top of the framework companies have build platforms like for example Talend ESB or Red Hat Fuse. However, you can just as easily use it in your own application code or build an API, an integration or a microservice.

Camel supports all kind of integration patterns and components. A developer can take the core-engine of the framework and can add more than 300 components to it. The components and patterns together form a route.

Combining superpowers

Both projects provide a lot of powerful concepts, patterns and processors. Between the 200 processors and 300 components there is a quite some overlap. Still, no software in the world support all libraries, protocols and technologies. What if these superpowers could be combined?

There is currently no NiFi component in Camel and no Camel processor in NiFi. The difficulty is that both have implemented lots of protocols, but they don’t provide one for external parties. It’s like having a gasoline and an electric engine. They can work together in all kind of hybrid ways, but it’s not easy to combine them.

The example

Let’s explore a hybrid solution for NiFi and Camel. As an example we use a very simple, hello world-like, use case:

Moving files between directories.

As source directory we use C:\in and as destination C:\out

How would one create a pure NiFi solution? Well, just use the GetFile and PutFile processor:

 

And how would this work in Camel? This can be done by using the Camel DSL:

from(file://C:/in).to(file://C:/out);

Both provide a simple and sufficient solution. Nobody would complicate things by using multiple technologies. But to keep things simple this is exactly what we will do 🙂

Keep in mind that there are many more complex situations where it makes sense to use both. We’ll come back to that later. First we will create a demo to combine Camel and NiFi in one solution. We do this on a software (tooling) and a code level.

One solution on software level

We’ll continue with our simple example of moving files between two directories. To investigate a solution on a software level we shall not code. Only software components are being used.

In NiFi the normal approach is creating flow with the user interface. As we don’t want to code our Camel Route too, we use Assimbly Gateway to configure the route in a browser. Assimbly allows to create connections with Camel and ActiveMQ.

Next step is to find a matching protocol to connect both technologies. A good candidate is to use JMS. Both are well-supported by both Camel and NiFi. Here is the combined flow:

 

Let’s check the JMS example in more detail.

  1. Camel

The Camel route running in Assimbly picks up a file from C:\in and puts it as a message on the JMS Queue “in” on ActiveMQ (also running in Assimbly).

 

You can find out how to run this Assimbly flow with Camel and ActiveMQ on the Assimbly wiki. There is a quick-start and also a tuturial on message queueing.

2. NiFi

Apache NiFi gets the message from the queue ‘in’ with the ConsumeJMS processor and publishes it on queue ‘out’ with PublishJMS processor.

To accomplish this, we first create a controller service for JMS:

 

The ActiveMQ Artemis client library (JMS Client Libraries) is downloaded directly from Maven.

Next step is to configure the ConsumeJMS processor:

And the PublishJMS processor:

Last, but not least, we start the flow:

3. Camel

Another Assimbly flow let Camel consumes the file from the queue ‘out’ and saves it into the directory C:\out. For this flow we clone the first flow and configure it in reverse:

When testing the flow it still functions the same way as NiFi or Camel did on their own, but now combined in one solution.

More complex stuff

You can choose this setup in more complex situations because of:

  • Separation of Concerns: let NiFi run flow logic and Camel run the connections (without the need of applications doing a lot of integration).
  • Let NiFi work centrally and Camel distributed.
  • Enhances functionality: NiFi processors and Camel’s components.
  • Have a clear transport layer (MQ).

It’s possible that completely different teams or engineers work on either of those tools.

Other options

Our example used JMS, it’s of course possible to use other protocols. For example let Camel post a message with the HTTP component and let the “HandleHttpRequest” processor of NiFi handle this request. Then NiFi posts the message with the invokeHttp processor to the “Jetty component” hosted by Camel that saves the message to file.

There are many other possibilities to use both NiFi and Camel (through Assimbly Gateway) together. For example use Apache Kafka broker with topics as broker instead of ActiveMQ. Or to use their REST interfaces. The key point to take is that here you can have separate-of-concerns and this setup support all kinds of use cases.

One solution on code level

Like Camel, NiFi can be extended with Java code. This is done by creating a custom processor or service controller. There has been some discussion in the NiFi community to use Camel code within NiFi processors. This is reflected in the Jira issues:

nifi-924 and nifi-1842

and also on the mailing list

This has not been materialized yet and there is not a lot of code to find on this topic. Therefore, I created two experimental custom NiFi processors which combines NiFi and Camel code.

How do they work?

As a first step we create a custom NiFi processor. There is an excellent guide for this written by Shubam Gupta. This takes a maven archetype to generate a default custom processor.

With this guide we create a new ‘ConsumeWithCamel’ processor. We add the following properties:

  1. From URI (the URI of the Camel component for consuming)
  2. Error URI (The URI of the Camel component for errors)
  3. LogLevel (The loglevel to the NiFi log of the Camel component).

Then we add the Camel code that:

  1. Starts a CamelContext
  2. Configures the route
  3. Creates a consumer template

We let Assimbly Connector handle the Camel code. This API is used in Assimbly Gateway as well. It uses a convention over configuration approach and already has a lot of Camel components (like the File component) built-in.

Here is the code used when starting the NiFi processor:

@OnScheduled
public void onScheduled(final ProcessContext context) {//Use Assimbly Connector to manage Apache Camel (https://github.com/assimbly/connector)
     getLogger().info("Starting Apache Camel");
        
        //Start Apache camel
        try {
          startCamelConnector();
        } catch (Exception e2) {
          getLogger().error("Can't start Apache Camel.");
          e2.printStackTrace();
        }  //Create an Assimbly flow ID
  UUID uuid = UUID.randomUUID();
  flowId = context.getName() + uuid.toString();       //configure the flow (Camel route)
        try {
           configureCamelFlow(context);
        } catch (Exception e1) {
          getLogger().error("Can't configure Apache Camel route.");
          e1.printStackTrace();
        }
        
       //start the flow (Camel route)
        try {
          connector.startFlow(flowId);
        } catch (Exception e1) {
         getLogger().error("Can't start Apache Camel.");
         e1.printStackTrace();
        }        
        
     //Create the endpoint
     try {
        template = connector.getConsumerTemplate();      } catch (Exception e) {
         getLogger().error("Can't create Apache Camel endpoint.");
        e.printStackTrace();
      }
        
  }

Last step is to get the messages from Camel with the help of the consumerTemplate and pass it through to the NiFi Processor.

The code to process a message:

@Override
public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException {//Get the message from the Camel route
Object output = template.receiveBody("direct:nifi-" + flowId);if ( output == null ) {
            return;
}
     
FlowFile flowfile = session.create();// To write the results back out to flow file
flowfile = session.write(flowfile, new OutputStreamCallback() {@Override
public void process(OutputStream out) throws IOException {
           out.write(output.toString().getBytes());
       }
});session.transfer(flowfile, SUCCESS);}

You can find the complete code on Github.

 

ProduceWithCamel

Next we create another custom Nifi Processor: “ProduceWithCamel”. This is similar to the consume processor, but it works in the reverse direction. For this we’ll use a producerTemplate to produce the messages. The code for this processor you can find here.

Note: These are experimental processors created only for this demo.

Testing the code

To test the code you can download the ConsumeWithCamel processor and also the ProduceWithCamel processor. Both NAR files are put into the lib directory of NiFi.

Now we can use the new Consume processor and configure it:

The Error URI is empty, which mean errors will be logged to the NiFi log file.

Secondly we configure the produce processor:

Finally we connect both processors with each other and start the flow.

The file will be picked up and stored just like in all other examples.

More possibilities

Just like using tools, the code solution also creates all kinds of possibilities. For example dataflows aren’t loosely coupled. So you always need to connect processors or process groups. When creating two process groups now you loosely couple with Camels’ VM component.

The first process group uses the producewithcamel with the URI vm://secondProcessGroup

The second process group consumes this message:

Now both flows move the file from one directory to another, but the process groups aren’t connected as usual. The new solution acts like a ‘wormhole’.

Though every example had the same result, there were many paths. Within integration it’s good to use open source as well as an open mind. Together they’re unstoppable on whatever path you are on.

Orde in het applicatie-landschap

Orde in het applicatielandschap

De integratiespecialisten van Caesar Experts/Syntegration scheppen orde in het applicatielandschap.

De Caesar organisatie bestaat meer dan 25 jaar en hebben in die tijd veel ervaring opgedaan in symteemintegratie. We organiseren op ons kantoor kennissessies op het gebied van systeemintegratie. Recent hebben wij een bijeenkomst voor Dutch NiFi User Group gehost. Collega Raymond Meester, Senior Integration Consultant, is een van de organisatoren van dit event, waar we samen met alle deelnemers de uitdagingen op het gebied van open source NiFi hebben besproken.

Applicaties hebben meestal een beperkte businesswaarde. Voor een organisatie gaat het om de bedrijfsprocessen die bovenop de applicaties draaien. Bedrijfsprocessen vereisen de inzet van meerdere applicaties en die moeten onderling veilig data kunnen uitwisselen. Integratie vindt traditioneel plaats vanuit de applicaties, maar deze manier van integreren is rigide en tegelijkertijd weinig flexibel. Het gevolg is een onoverzichtelijke spaghetti van verbindingen. Als het proces verandert door nieuwe applicaties zorgt dat voor hoge kosten en lange doorlooptijden van projecten, en dat is precies waar onze integratiespecialisten dagelijks aan werken om dat te voorkomen.

Integratietechnologie

Een integratielaag faciliteert de technische interfaces voor bedrijfsprocessen. Het zorgt voor een eenduidige en flexibele manier om organisatiedoelen te realiseren. Een integratielaag is op verschillende manieren toe te passen, zoals met code (Java Code/Apache Camel, etc.) of met een platform, zoals Apache NiFi.

Een integratieplatform staat midden in het applicatielandschap en moet jouw business doeleinde ondersteunen. Bij het uitvoeren van projecten onderzoeken wij bij Syntegration altijd samen met de klant eerst welke integratietechnologie het beste aansluit bij de integratielaag van de gebruikte applicaties, om hier vervolgens de juiste keuzes in te maken.

Wij adviseren over de keuze van de best passende integratie omgeving denk aan  API Management, ESB Tooling, koppelingen, etc. Je kunt ook bij ons terecht voor informatie over aanvullende tooling of een risk assessment van jouw huidige omgeving. Onze integratie architecten bieden hulp bij:

  • de analyse van het applicatielandschap en het ontwerp van de integratie architectuur;
  • de keuze van een integratieplatform;
  • migratie van het ene naar het andere integratieplatform;
  • development van de integratie oplossingen;
  • de inbeheername en het beheer van de integratie oplossing.

Kortom, moet jij de beschikking hebben over up-to-date data, meerdere kritieke applicaties en/of legacy systemen, neem dan contact met ons op en laten wij samen eens kijken naar de mogelijkheden om de spaghetti bij jou te herstructureren.

Naadloze systeemintegraties binnen complexe ketens

Met Syntergration realiseren we naadloze systeemintegratie binnen complexe ketens

Er kunnen allerlei redenen zijn waarom er een variatie aan applicaties binnen jouw organisatie in gebruik zijn: digitale transities, het niet afstand kunnen (of willen) doen van verouderde systemen of wellicht is er sprake van schaduw-IT. Binnen Caesar Experts hebben wij de kennis en ervaring van onze integratie experts samengebracht in één team: Syntergration. Zij scheppen orde in jouw applicatielandschap. 

Organisaties waar verschillende applicaties data tussen systemen uitwisselen staan voor een uitdaging. In de praktijk zijn het vaak tijdrovende en handmatige handelingen, die ook nog eens foutgevoelig zijn. Als een bedrijf dit proces niet goed onder de knie heeft, is de kans groot dat dit resulteert in niet-consistente data. Juist voor de organisaties die worstelen met hun integraties van of tussen hun systemen, kan Syntergration de helpende hand bieden. 

Dat veel organisaties bezig zijn met het integreren van applicaties, bleek ook uit de gesprekken die we in januari voerden met verschillende partijen tijdens de Webwinkelvakdagen in Utrecht. Om de concurrentiestrijd te kunnen winnen moeten zij alle backoffice processen aan elkaar kunnen knopen, zodat ze bestellingen foutloos, snel en tegen de laagste kosten kunnen uitvoeren. 

Realiseren van integratieprojecten 

Een van de klanten waar Syntergration de integratie van applicaties mogelijk maakt, is een top 3 retailer van Nederlandse bodem. Deze klant gebruikt voor hun online activiteiten – uiteenlopend van betalingen tot kredietbeoordelingen en leningen die geïntegreerd dienen te worden – een verscheidenheid aan applicaties. Uiteraard draaien hiernaast ook Warehouse Management Systemen (WMS) en Transport Management Systemen (TMS).

Syntergration maakt daarvoor gebruik van het integratieplatform Sonic van Aurea. Syntergration regelt verschillende zaken voor integratie met Sonic, zoals architectuur, ontwikkeling en development en beheer. Dit allemaal inclusief 24/7 remote support vanuit het hoofdkantoor van Caesar Experts in Utrecht. Uiteraard staan onze specialisten ten tijde van de coronacrisis ook garant voor dezelfde service als gebruikelijk.

In het geval van de eerdergenoemde klant is Sonic een uitloopmodel. Daarom heeft de klant in overleg met Syntergration besloten om een project te starten waarbij ze Sonic migreren naar onder andere Apache NiFi en Apache Camel. Voor Apache Camel heeft Syntergration zelf een webapplicatie ontwikkeld, genaamd Assimbly. Met behulp van Assimbly wordt het configureren van een koppeling eenvoudiger en hoeft het niet opnieuw ontwikkeld te worden.

Syntergration als kennis- en implementatiepartner

Bedrijven die de Apache open source projecten steunen, hebben hier meestal zelf een commercieel product bovenop gemaakt. Syntergration ondersteunt onder meer:

  • Apache NiFi – Cloudera Dataflow Platform
  • Apache Camel – Red Hat Fuse
  • Apache Camel – Talend ESB
  • Apache Camel – Caesar Assimbly

Elk bedrijf is uiteraard vrij om te kiezen voor (gratis) open source software of voor een commercieel alternatief. Bij open source staan bedrijven er uiteraard wel alleen voor. Bedrijven met genoeg ontwikkelaars en focus op IT kiezen hier vaak voor. Bij issues of ontbrekende functionaliteiten moeten ze het dan wel zelf oplossen. 

Veel andere bedrijven die niet over de benodigde resources beschikken en of dit niet als core business beschouwen, kiezen meestal voor een commercieel product of een combinatie van beiden. Caesar Experts fungeert in dit verband als kennis- en implementatiepartner. 

Caesar Experts op ICT & Logistiek

Ook dit jaar zijn de integratie specialisten van Caesar Experts aanwezig op ICT & Logistiek van 5 t/m 7 november in de Jaarbeurs in Utrecht. De kennis en expertise van de Caesar Experts consultants sluiten nauw aan bij het thema van dit jaar: Smart Warehousing.

Smart Warehousing

Smart Warehousing houdt in dat systemen onderling worden verbonden, mensen en robots gaan samenwerken en data wordt uitgewisseld. Dit zorgt voor meer flexibiliteit en efficiency.  Hierin ligt ook een gevaar voor onnodige complexiteit. Deze complexiteit is te voorkomen door te kiezen voor het juiste integratieplatform. Een integratieplatform staat middenin het applicatielandschap en ondersteunt de business doeleinden.

Passend integratieplatform

Onze integratie specialisten adviseren over de keuze van het best passende integratieplatform, verzorgen de inrichting en helpen met het opstellen van protocollen en nieuwe interfaces. Zij zorgen ervoor dat data-uitwisseling tussen applicaties kan plaatsvinden, zodat u de juiste informatie kunt delen, interpreteren en samenvoegen. Integratie zorgt voor meer flexibiliteit en efficiency.

Binnen Caesar Experts hebben we de kennis en ervaring van onze integratie experts samengebracht binnen één team om u nog beter te kunnen ondersteunen. De naam van dit team? Syntergration.

Bezoek ons op ICT & Logistiek, standnummer 01.A097, wij vertellen  graag wat wij voor u kunnen betekenen.

Help, ik vertrek naar de cloud!

Ik vertrek. Verhalen om van te smullen. Dagdromers die roekeloos emigreren. Met de bingokaart in de hand vinken we alle tegenvallers af. De taal blijkt een probleem? Bingo. De bouwvergunning is nog niet rond? Check. Dan zijn er de legio niet nagekomen afspraken, houden de bouwvakkers voortdurend siësta en zijn de avonturiers moe. Hondsmoe. Mooi leedvermaak. Juist omdat het misgaat. Loopt het gesmeerd, dan worden we jaloers. Want dan had jij daar ook kunnen zitten. Met je bed and breakfast tussen de olijfbomen in de zon. En terwijl je je gasten uitzwaait naar het regenachtige Nederland, ontkurk jij een mooie Chianti Classico, omdat het volgende onderhoudende gezelschap arriveert. Hou dat beeld vast. Zo’n geolied leven. Of, om het op de business te gooien: een geoliede organisatie. En dan met name op het gebied van IT. De cloud, die je kan verlossen van alle kopzorgen rond het beheer en het up-to-date houden van je infrastructuur, je verouderde software. En straks de hardware. De cloud, die je redt van dat eenzame eiland waarop je nu opereert, zonder connecties of interacties met andere platforms of systemen.

Angst

Nou is de cloud inmiddels mainstream, maar nog niet voor iedereen. De belangrijkste oorzaak? ‘Ik vertrek’-angst. Bang voor de migratie. De bingokaart met alle valkuilen: hoge, uit de hand lopende kosten, het onveilige gevoel van gedeelde servers. Is het echt nodig? Laten we het nog maar even aankijken. Dat gevoel. Een gemiste kans. Want je doet je organisatie te kort. Zeker met de Autonomous Database. Revolutionair databasebeheer door de technologie zelf: zelfsturend, zelfbeveiligend en zelfherstellend. Je DBA-ers hoeven zich niet langer bezig te houden met back-ups, het oplossen van problemen, de beveiliging en allerlei ander beheer. Denk je in: foutloos datamanagement. Altijd goede performance. Flexibiliteit, snelheid en uitwisseling van data. Van klantgegevens tot verkooptransacties. Van CRM tot ERP-systeem of BI-systeem en alle overige managementinformatie. Je organisatie kan exponentieel groeien én inspelen op de eisen van de markt. Klinkt goed toch?

Maar hoe pak je dat aan?

Je hebt geen zin in ellende. In oneindige verbouwingen of andere ‘Ik vertrek‘-tegenvallers. De oplossing is simpel maar belangrijk: door niet alle schepen achter je te verbranden, maar stap voor stap over te gaan. Met professionele begeleiding, zodat je niet in zeven sloten tegelijk loopt én je je verwachtingen realistisch houdt. Ook spraakverwarring tussen de technologie en de business moet je voorkomen. De welbekende taalbarrière. Daarnaast kun je pas starten als je weet waar je als organisatie staat. De mate van volwassenheid van je bedrijf op IT-gebied. Voor welke stappen ben je klaar? De een wil alles naar de cloud verhuizen, terwijl de ander gebaat is bij een overgang naar Software as a Service. Of je houdt het voorlopig op een combinatie van de bestaande on premises oplossing in combinatie met cloud-based IT. Uiteindelijk wil je maar een ding: tussen de spreekwoordelijke olijfbomen efficiënt je business runnen. De nieuwe technologie omarmend, maar wel op een verantwoord tempo.

Cloud ready?

Ben je nu benieuwd of jouw organisatie klaar is voor de cloud en de Autonomous Database? Dan heeft Caesar de Cloud Ready Scan. Een Cloud Maturity Model, zodat je niets overhaast doet. Met veel aandacht voor de architectuur, de helderheid en de gebruiksvriendelijkheid van je infrastructuur. Bij Caesar Experts onderzoeken we samen exact waar voor jouw organisatie de efficiencyslag ligt en hoe je kosten bespaart. In vijf dagen weet je óf je kunt vertrekken. En wat er wel en niet mee moet. Daarbij ligt de focus op de ambitie van je organisatie. Met de technologie als hulpmiddel. Innovatie, waar menig bedrijf jaloers op is. Wil je ook vertrekken naar de cloud en de Autonomous Database? En wil je weten hoe een geoliede organisatie voor jou gaat werken?  Neem gerust contact op voor een goed gesprek met een kop koffie. Gewoon in Nederland, on premises.

Van modulaire software naar het modulaire bedrijf

Van modulaire software naar het modulaire bedrijf

Net als een huis dat bestaat uit individuele bakstenen, bestaan programma’s uit stukjes code. Code wordt meestal gebundeld in modules. Programmeurs zijn het dan ook gewend om modulair te werken. Maar al die ‘bakstenen’ moeten wel bij elkaar gehouden worden. Zonder cement zou een huis immers onbewoonbaar zijn. Programmeurs spreken over het compileren van code. Wanneer een programma eenmaal gecompileerd is, is het cement hard. Gelukkig is gecompileerde software vaak flexibeler dan gehard cement. Denk bijvoorbeeld aan muziek. Wanneer je een opname opslaat in een digitaal bestand, kan het eindeloos gekopieerd worden. Probeer dat maar eens met een huis!

De limieten van code

Digitaal kopiëren is makkelijk. Meestal willen we echter geen exacte kopie, maar bepaalde elementen in een applicatie veranderen. Dat gaat normaliter als volgt: de gebruiker vermeldt de nieuwe vereisten bij de programmeur als concrete issues. Vervolgens gaat de programmeur aan de slag om het programma aan te passen, de code wederom te compileren en te delen met de gebruiker.

De programmeur kan de gebruiker meer invloed geven door opties of configuratiebestanden in te bouwen. Dit maakt de software flexibeler. Toch is deze aanpak nog steeds niet flexibel genoeg om adequaat te kunnen reageren op de snel veranderende omstandigheden in de markt. Bedrijven beschikken dus niet over dezelfde modulariteit als software programmeurs. Er blijft een gat tussen IT en de business.

Low-code als oplossing?

Low-code is een van de manieren om deze gapende afstand toch te overbruggen. In plaats van een programmeertaal gebruikt low-code visuele bouwblokken en modelleringstools om bepaalde functionaliteiten te creëren. Nadeel is dat het niet gemakkelijk is om een low-code platform te bouwen. Voor elk onderdeel van een programma – zoals de gebruikersinterface, datamodellen of business logic – zijn andere vormen van visualisatie nodig.

Op dit vlak is code toch universeler, aangezien alles wordt gepresenteerd als tekst. Er wordt al jaren getracht om low-code-platforms te creëren, maar dit leidde vooralsnog tot inflexibele en niet-draagbare programma’s. Recent hebben Mendix, Outsystems, Betty Blocks en Progress Kinvey wél vooruitgang weten te boeken met low-code. Het is natuurlijk nog steeds niet zo open en uitgebreid als de meeste programmeertalen, maar er kunnen volwaardige applicaties mee worden gebouwd.

De functionaliteiten van low-code-platforms groeien. Dat is ook wel nodig om flexibele programma’s te maken. De keerzijde is dat low-code-programma’s steeds lastiger worden om te bouwen. Er verschijnen steeds vaker low-code-platformspecialisten om alles in goede banen te leiden. Dat ondermijnt de vrijheid en toegankelijkheid van low-code. Low-code is onderdeel van de oplossing, doordat het programmeren dichter bij de bedrijfspraktijk brengt. Maar het is niet de oplossing voor het centrale probleem van applicatiebouw: programma’s zijn alleen modulair tijdens het bouwproces en niet wanneer ze in gebruik zijn.

Runtime delivery

Bij Caesar Experts streven we naar een modulair bedrijfsmodel. Dat wil zeggen dat de bedrijfsvoering niet afhankelijk is van software, maar het bedrijf is de software. Een veel directere aanpak die ik runtime delivery noem. Bij runtime delivery heeft een bedrijf directe online toegang tot de bouwblokken voor programma’s. Het is met andere woorden geen low-code-platform om nieuwe applicaties in het leven te roepen, maar een ‘high-code’-dienst om een bedrijf mee op te bouwen. De individuele bouwblokken vervullen slechts één enkele taak (separation of concerns) binnen een specifiek domein, compleet onafhankelijk van andere bouwblokken.

Deze verschillende bouwblokken doen hun werk binnen de cloud. Dat zorgt voor een gestroomlijnde dienstverlening, die overal toegankelijk is. Dankzij runtime-delivery-bouwblokken kunnen bedrijfsontwikkelaars die nu nog afhankelijk zijn van Excel of low-code-platforms functionaliteiten toevoegen op bedrijfsniveau.

Van datastroom naar bedrijfsproces

Runtime delivery klinkt wellicht als een mooie toekomstdroom, maar het is nu al realiteit. Een goed voorbeeld van is Progress Corticon, een business rules engine die totaal onafhankelijk van andere software functioneert. Corticon maakt gebruik van ‘Als … dan … anders’-constructies. Zo simpel dat een bedrijf ze gemakkelijk zelf aan kan passen.

Een ander voorbeeld is Apache NiFi. Dit project vindt zijn origine bij de NSA, die het gebruikte om datastromen te creëren en vervolgens te manipuleren vanuit een browser. Het spreekt voor zich dat dezelfde flexibele omgang met waardevolle datastromen ook van nut is voor bedrijven.

Het programmeren van dergelijke datastromen kan echter al snel behoorlijk complex worden. Met Apache NiFi kan IT een datastroom bundelen. Die kan vervolgens weer gebruikt worden door de business als bouwblok. Zo opent slimme IT de weg van chaotische datastromen naar een verbetering van je bedrijfsproces.

Het modulaire bedrijf

Het mooie is dat je bovengenoemde voorbeelden gemakkelijk met elkaar kunt combineren. Verweef ze met je bedrijfsproces en het is niet langer alleen de software die van functionaliteit kan veranderen. Modulaire software legt grondslag voor een modulair bedrijf. De technologie is er al. Het is aan jouw bedrijf om de tweede stap te zetten.

Flinke stappen voorwaarts met Assimbly 1.5.0

Syntergration bracht een half jaar geleden Assimbly Gateway 1.0 uit. Een generic application die andere applicaties met elkaar verbindt en data deelt. Sindsdien is er veel gebeurd. We zetten de belangrijkste veranderingen voor je op een rijtje.

Camel

De motor achter Assimbly is Apache Camel, een open source Java-framewerk dat moeiteloos verschillende applicaties, protocollen en berichtformats met elkaar integreert. Binnen Assimbly hebben we Apache Camel geüpdatet naar versie 2.22.4. Ook Apache ActiveMQ is geüpdatet, naar versie 5.15.9. Dat betekent dat we de mogelijkheden van Assimbly behoorlijk hebben vergroot. We ondersteunen nu de volgende Camel-componenten:

  • AMQP
  • AS2
  • CXF
  • ElasticSearch
  • Jetty
  • RabbitMQ
  • Slack
  • Websocket

Webapplicatie

Onze Assimbly-webapplicatie heeft ook een aantal belangrijke veranderingen doorgemaakt. Zo zijn we overgestapt op JHipster versie 5.7.2. Samen met de update van JHipster haalden we ook de nieuwste versies van Angular en Spring Boot binnen. De Assimbly-webapplicatie biedt nu ook support voor HTTPS/TLS-certificaten. Je vindt er meer informatie over op onze wiki.

Naast deze belangrijke updates hebben we ook behoorlijk wat kleine veranderingen doorgevoerd:

  • Ondersteuning voor Simple Expression Language
  • Ondersteuning voor MS SQLServer en Oracle DB
  • Ondersteuning voor byteberichten als output
  • MaximumRedeliveries en redeliveryDelay zijn vanaf nu configureerbaar
  • Rebase naar DocConverter
  • Camel-opties zijn nu te selecteren uit een alfabetische lijst (maar custom opties blijven toegestaan)
  • Verbeterde error handling

De complete release notes en alle downloadlinks vind je hier terug.