Search code examples
javaapache-camelhbasespring-camelapache-camel-3

Apache Camel components' version compatibility


I've found out that it is very uncommon to choose a client version that is not the same as the server's version (for example in HBase client - server’s version compatibility).

On the other hand, I've got an answer about Camel compatibility that had been mentioning the Camel-HBase jar that I can find a fit version of the client's jar through downgrading it (for example https://mvnrepository.com/artifact/org.apache.camel/camel-hbase/3.1.0 for an old HBase version). But this answer also said that it is a bad thing to do (Can Apache Camel integrate with an old HBase version?). I wonder what is the solution if there is no such option for me to upgrade the HBase server (since it's not mine). Why choosing a lower Camel component (such as Camel-HBase) version is bad?

It's impossible to work otherwise since it will demand every integrated technology to be the most upgraded.


Solution

  • Sorry, obviously my answer you mention was not clear enough.

    You absolutely can use an older Camel version whose dependencies match your specific Hbase-client version need.

    But this decision hat some drawbacks:

    • You cannot upgrade your Camel application (version lock-in)
    • You cannot use another Camel component in the same application that has a more recent version because mixing Camel component versions (eg. camel-core 3.9.0 and camel-hbase 3.1.0) leads to lots of problems

    The consequence of these points is that you probably have to "isolate" your Hbase integration in a Camel application that uses an old, "freezed" Camel version.

    "Isolate" because as soon as you want to do something else that needs a newer Camel version, you have to build a new application that communicates with your hbase-integration through an API.

    I hope, this answer makes more sense for you.

    About your final statement

    It's impossible to work otherwise since it will demand every integrated technology to be the most upgraded.

    There are a lot of technologies that offer a much wider compatibility. Messaging clients like Kafka or ActiveMQ are wire-compatible with older server versions.