1 2 3 Previous Next 34 Replies Latest reply on Nov 25, 2003 7:18 AM by ivelin.ivanov Go to original post
      • 15. Re: JMS Clustering in JBoss 3.2
        ivelin.ivanov

        After further debugging of the JBossMQ code, I am thinking that it would be possible to implement the forementioned algorithms as a JMSServerInterceptor.

        The aim is to satisfy some of the requirements that Adrian and Sacha listed. More specifically:

        1) Clustering will be configurable by destination. The HAJMSServerInterceptor will inspect the destination and will apply HA behavior based on the HA properties. Something like:









        When HAConf is not provided for a destination, HAJMSServerInterceptor will be a pass-through.

        2) The invokation layer will be independent from the scalability of the JMS server. Existing connection mechanisms like JVMIL, HttpIL and UIL2 will continue to work.

        I am not ready to code it up yet but walking down that path.

        Ivelin

        • 16. Re: JMS Clustering in JBoss 3.2
          ivelin.ivanov

          Oops. Makes sense.

          Ivelin

          • 17. Re: JMS Clustering in JBoss 3.2

            I am putting a watch on this topic as I am interested helping you the way I can.

            How can I help?

            • 18. Re: JMS Clustering in JBoss 3.2
              ivelin.ivanov

              You can start by validating my design proposal in the earlier messages.
              Do you think it is feasible to implement the clustering layer as an interceptor?
              How would you do it?

              • 19. Re: JMS Clustering in JBoss 3.2
                ivelin.ivanov

                Thanks for the hints.

                I am not sure whether you approve or disapprove implementation with an interceptor.

                Can you briefly scetch a lower level design of what you think might work as a first iteration, simplest possible working implementation?

                Ivelin

                • 20. Re: JMS Clustering in JBoss 3.2

                  I'm not sure JBossMQ is designed in such a way
                  that there is an easy implementation.

                  Something similar/alternate implementations of the
                  actions in BasicQueue for transaction processing to also
                  perform replication would probably fit better.

                  The message persistence should give some idea where
                  the queue replication needs to go. This includes building
                  the queue from the current cluster state when you boot
                  a new machine.

                  Like I said before, there is more to it than just replicating
                  messages
                  We need to at least track unacknowledged messages
                  in case of failure and DurableSubscription state.
                  We also need to avoid two clients trying to use the same
                  client-id by connecting to different machines.
                  etc.

                  The assignment of the internal messageID to preserve
                  ordering is an interesting problem. I think Bela has
                  something that provides total ordering across a cluster
                  by asking the master node for an id. We only need ordering
                  per destination, not sure if we need a globally unique
                  id for the pm implementations?

                  Regards,
                  Adrian

                  • 21. Re: JMS Clustering in JBoss 3.2
                    ivelin.ivanov

                    Just an update.
                    I asked for advice all the people that have author tags in the JBossMQ code base: Hiram, Norbert, David, etc.
                    Noone has responded for over two weeks.
                    I am still spending several hours a week trying to elbow my way through the code and find the right place to implement destination replication, transaction rollback on server failure and auto-reestablishing connection and session with next available server.
                    Will keep in touch.

                    Ivelin

                    • 22. Re: JMS Clustering in JBoss 3.2

                      I think Norbert is still around but he doesn't work on JMS.
                      Hiram hasn't worked on JMS for a year, he is now part
                      of the Geronimo project.
                      Last I heard, David was back-packing around the world.

                      Regards,
                      Adrian

                      • 23. Re: JMS Clustering in JBoss 3.2

                        Again, I can help if needed but it's difficult to start from scratsh.

                        Ivelin, can you provide me some guidelines (links, doc, wiki page, whatever) ?

                        Regards,

                        Stephane

                        • 24. Re: JMS Clustering in JBoss 3.2
                          ivelin.ivanov

                          Adrian thank you for the info.

                          Stephane, the best documentation is the Admin Doco + this thread + source code.

                          I am not studying Joram. It has been released under LGPL and seems to have an active development community. Supports clustered topics. Queues are not clustered yet.
                          http://joram.objectweb.org/doc/index.html


                          Ivelin

                          • 25. Re: JMS Clustering in JBoss 3.2
                            ivelin.ivanov

                            Quick update.

                            I was able to integrate Joram as a JBoss service and test clustered topics. The SAR is just under 1MB.

                            I will clean up the code and post it for review.

                            Ivelin

                            • 26. Re: JMS Clustering in JBoss 3.2
                              rtvkuijk

                              Do you know if it joram provides high availability as well?

                              e.g.
                              - a producer publishes to server A
                              - a consumer has a durable subscription on server B but is not connected
                              - server A crashes
                              - de consumer connects to server B

                              does het get the message that was originally published to server A?

                              • 27. Re: JMS Clustering in JBoss 3.2
                                fmaistre


                                Yes it does.

                                In PTP mode this would work as well, given the fact that the queue is hosted by the consuming application's local server (B of your example).

                                All the info about JORAM is browsable on http://joram.objectweb.org.

                                You may also ask JORAM list: mailto:joram@objectweb.org

                                Regards
                                Frederic.

                                • 28. Re: JMS Clustering in JBoss 3.2
                                  ivelin.ivanov

                                  I would like to present hajms.sar,
                                  which wraps Joram and with minimal configuration allows clustered JMS in JBoss.

                                  The working copy of the code can be found at:
                                  http://cocoonhive.org/jboss/hajms/

                                  The binary is under:
                                  http://cocoonhive.org/jboss/hajms/output/

                                  I would liket to hear some feedback on this solution.

                                  If there are no objections, I will try to clean it up some more and commit to the JBoss 3.2 branch.

                                  Ivelin



                                  • 29. Re: JMS Clustering in JBoss 3.2
                                    ivelin.ivanov

                                    If there are Joram experts monitoring this forum, I can use some advise how to bridge transparently a JGroups Partition configuration to the Joram Agents.

                                    If we do this, then the JMS server can be farmed with zero configuration.