Github user bbende commented on the issue:
https://github.com/apache/nifi/pull/2702
@MikeThomsen I've only spent a couple of minutes looking at this, but I'm
not sure it can work out as nicely as you are hoping... the controller service
API here is heavily dependent on the actual pulsar client API.
The only way you can get the transparent swapping between processors and CS
impls is if the client API is hidden behind the CS impl. For example with
HBase, we have...
- HBase processors (no dependency on hbase-client, dependency on hbase CS
api)
- HBase CS API (no dependency on hbase-client)
- HBase CS 1.1.2 impl (dependency on hbase-client 1.1.2)
So because the processors and CS API do not know about hbase-client, then
we can transparently provide new implementations without changing the
processors.
In this case we have...
- Pulsar processors (depends on Pulsar client 1.21.0-incubating)
- Pulsar CS API (depends on Pulsar client 1.21.0-incubating)
- Pulsar CS Impls (depends on Pulsar client 1.21.0-incubating)
I'm not saying the current setup is bad, just mentioning that it won't work
out the way the hbase setup works.
The trade-off is that in order to achieve the hbase setup you essentially
need to recreate parts of their client API and depending how much you have to
recreate, it may not be worth it if you are recreating the entire pulsar client
API just to shield the processors.
Also, something to think about is whether Pulsar's client will work well
across different broker versions. For example, when Pulsar 2.x comes out, will
the 1.x client work well against a 2.x broker? or vice versa?
In Kafka land their client has had issues across versions, like 0.8 client
against 0.9 broker did not perform as well as 0.9 client against 0.9 broker, so
for this reason you really need to use the corresponding client that goes with
the broker.
If Pulsar's client doesn't have this problem, maybe we don't need to worry
at all about this versioning stuff.
---