Hi JB,
Sounds good to me.
Just some side questions:
- You're talking about having an embedded broker in Karaf so does it
mean that we can also have some Karaf command to control the broker?
(like we can have with Camel)
- About the client, should we will need to use Pax-JMS or not? If not,
users will use it by reference with an OSGi generic service through the
service registry?
- If all import package will be private, that is a good thing (big
bundle size but not a big deal), is there a plan to remove Spring
framework dependencies and use another lighter IoC framework or be more
low level with the JDK17 and soon JDK21 for example?
Thanks for your great job on ActiveMQ!
regards,
François
On 11/09/2023 14:07, Jean-Baptiste Onofré wrote:
Hi all,
As you know, ActiveMQ 5.19.x is in preparation with importants
changes: JMS 2, Jakarta namespace, Spring 6, ...
For ActiveMQ 5.19.x, I propose to change the OSGi packaging (client
and broker). Today we have OSGi bundles for client and broker, with
Karaf features installing all dependent features/bundles (spring,
commons-*, etc).
This approach has few issues:
- any update requires SMX bundles or Karaf features, coupling ActiveMQ
OSGi with Karaf (jetty, spring, ...)
- it's very hard to install ActiveMQ OSGi without Karaf
- we can have some side effects depending of what's installed in the
Karaf runtime (we already had refresh issues in the past, amd
cascading refresh)
My proposal is to use a new uber bundle approach for ActiveMQ OSGi
client and broker. The idea is to provide OSGi bundles that
self-contains everything needed to use/run ActiveMQ. The export
packages are the same, but the import packages will be very minimal,
most the packages will go private.
The advantage is that ActiveMQ OSGi doesn't depend on anything at
runtime, it's just a single bundle to install (one bundle for client,
one bundle for broker), no extra dependency (so not release
dependencies like ServiceMix Bundles or Karaf features), dedicated
classloader avoiding refreshes, etc.
The only drawbacks are the size of the ActiveMQ client & broker
bundles (as they ship other packages, is it really a big deal ?) and
the fact that ActiveMQ won't share packages with other bundles (I'm
thinking about Spring bundles for instance).
It's basically using something similar to the apache-activemq
distribution but in OSGi/Karaf.
Thoughts ?
Regards
JB
--
--
François