-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make JMS a better fit for using Kafka #210
Comments
I do not seem to be able to create or attach any labels like {enhancement, jms3.0, kafka} :-) |
@hutchig I'm with you.. I think a JMS v3.0 is long over due. There are a couple other initiatives looking to do something similar-- OpenMessaging, MicroProfile, etc. Kafka not having a standardized API is straight-up tech debt and the gaps are manageable. In my strongly opinionated view -- the current JMS data models and interfaces should be punted into the sun: #1. My read of the EE Compatibility requirements seem to hamstring the ability to move JMS forward. We may need to have some new spec. Specifically, my read is that we would not be able to completely deprecate or replace APIs. If we can't get agreement that JMS suffers from "functional defect" (Which I believe JMS suffers from by my biased reading of Section 6), we may be better served going down the path of starting a new EE spec. From Section 6:
Reference: EE CompatibilityRequirements I think we need to resolve #1 to set the direction-- JMS v3.0 or new spec-- before going further. My quick list of JMS issues and wish-list:
|
Different compatibility requirements could be defined for Jakarta EE. Pruning out some rarely used functionality that otherwise complicates |
@bshannon You bring up some good points. I've been amp'd up to get this addressed for a while, so my injecting of some humor (punting the spec into the sun) shouldn't be taken literally. The one issue (off the top of my head) that would break legacy would be the collapsing of the topic and queue address space (#7 above) . It seems like a big thing, but if we can get that kind of deprecation approved, I think it would be for the best for the community to keep the standard branded as JMS. I think this is a we-really-should-do-it type deal, since currently application code is tightly coupled to the messaging pattern and cannot change by config only. Major brokers support alternatives, so the net effect is that clients are coded to the implementation, and the value of having the API is lost. |
I'm not an expert on the JMS spec, but I didn't think the spec defined the address space Having some standardization around the names that can be used for topics and queues |
@hutchig I'm not sure, which role or team you're in here. I applied "enhancement". If "Kafka" is not too narrow as a keyword, why not, but please let's use GitHub more effectively and a 3.0 milestone for JMS 3.0 and potential features or enhancements targeting that release. There is a big mess like |
@bshannon I've scanned the JMS specs, and it looks like you are right. While the notion that PTP and PubSub are separate domains, the naming needing to be distinct isn't specifically called out. The major implementations have treated them as such, and I must have extrapolated that to be from the spec. |
Yah! We have a milestone =) Seems like there is sufficient room for discussion on improvements and growing interest to make a JMS v3.0 move forward. How about we move the smaller feature changes into their own tickets for discussion and we can review PRs from there? |
Yes, beside the one officially mentioned in https://projects.eclipse.org/projects/ee4j.jms I created 2.1 (if it ends up 2.0.3 or so we can still change, but it's meant to capture those originally planned for 2.1) and 3.0 |
I was wondering what the 'gaps' were between a future JMS 3.0 specification and its use to read and write from Kafka topic queues.
Of course JMS is an API so perhaps some aspects are just completely outside its scope.
Nonetheless, I think it would be interesting to look at.
If JMS was advancing to 3.0 what might be missing that would enable it to fit 'well'
over a subscope of Kafka use cases:
For example how would the JMS {que,topic} work for the Kafka {consumer-group} concept...
could JMS shared subscriptions be evolved slightly to provide a good fit?
https://www.ibm.com/support/knowledgecenter/en/SSWMAJ_2.0.0/com.ibm.ism.doc/Developing/sharedsubscriptionsinjms.html
"Shared subscriptions can be bound to a client ID, or can exist within a global namespace. If a client ID is specified for a connection that is used to create or join a shared subscription, then the subscription is bound to only that client ID. In this case, the client ID specifies the namespace for the subscription name. If no client ID is specified for a connection that is used to create or join a shared subscription, then the global namespace is used. By using a global namespace, it is possible to share a subscription between multiple connections. This configuration can be used, for example, to allow load balancing of a message-driven bean application that runs on an application server cluster."
If it could be made to have a good fit - could the environment that exits in a JEE context allow some
real customer value add from the container that might be currently missing in the Java SE Kafka client?
The text was updated successfully, but these errors were encountered: