1

I wonder if it is possible to integrate an old version of a Camel component, with an application of a newer Apache Camel version. In my case I want to integrate to Hbase server version 1.2, that is supported only with HBase client 1.2. Therefore even though I want to use a 3.1 Camel version, I want to use the 3.0.1 version of Camel-HBase component. Is it a fine thing to do?

Or is there any place that I can see the versions of the libraries Apache Camel supports?

user7551211
  • 649
  • 1
  • 6
  • 25

1 Answers1

2

You can check the Camel dependencies POM to find the versions of dependencies that are imported by the different components.

See the dependencies POM of Camel 3.10.x. You will find <hbase-version>2.3.1</hbase-version> in it.

Another source is Maven Central where you can see the dependency versions of a specific Camel component version.

See Camel-HBase 3.1.0 that references Hbase-client 1.2.6.

However, normally one cannot choose the Camel version to match a specific component dependency version. In general it is the other way round. You want or have to work with an already existing version or you want to use a current version to get the best of the framework.

If you build a new application with Camel 3.10.x, you get the hbase-client in version 2.3.1.

If newer Hbase client versions are not compatible with Hbase 1.2 it becomes difficult.

  • you get lots of problems when you mix and match Camel component versions
  • even if you can build your application with an older Camel version, you could never upgrade

The only solution I see would be to isolate the Hbase integration in its own (freezed) application with an older Camel version that matches your desired Hbase-client version.

burki
  • 6,741
  • 1
  • 15
  • 31
  • I still don't quite understand one thing. HBase client is not supported with older versions. Isn't choosing a fit Camel-HBase jar's version to fit, a fine thing to do? – user7551211 Aug 22 '21 at 08:07
  • It is OK as long as you don't need to upgrade your application. This is what I mentioned about the isolated Hbase integration. Because what you MUST NOT DO is to mix Camel versions in the same application. For example use camel-core 3.11.0 and camel-hbase 3.1.0. If you do this you typically get very strange exceptions. – burki Aug 23 '21 at 05:09
  • But than it becomes very hard because if I want to integrate to new Mongo version, with an old HBase, I’ll probably won’t be able to find a fit Camel version that includes both fit components. What you say here is that Camel won’t let me dynamically integrate with difference versions of different technologies (old and new) - only the version of each that has been supported on the specific Camel version? – user7551211 Aug 23 '21 at 08:00
  • 1
    In theory, this is correct. But a lot of technologies offer backward compatibility. For your MongoDB example [see here](https://docs.mongodb.com/drivers/java/sync/current/compatibility/). The most recent mongodb-driver supports a wide range of server versions. – burki Aug 23 '21 at 08:44