3 Replies Latest reply on Apr 13, 2005 12:39 PM by Adrian Brock

    ordered (re) delivery etc.. / ebMS

    Ronald van Kuijk Master

      Hi,

      I've been working with Hermes, the freebXML ebMS server. They have developed lots of things that are already in J2EE (like transactions, a connectionpool) for resons beyond *my* comprehension. Users say they just want to be able to run it in a simple servlet engine, so anything other than a j2ee server (it was even mentioned that the would build their own servlet engine or plain http server). Since Tomcat as well as Jetty already have transaction and connectionpool support, to me it is like reinventing the wheel, but that is their choice.

      One other issue is that ebMS has something called ordered delivery, redelivery delay and redelivey count. Hermes also implemented this themselves, but It would be realy great if JMS would support something like this. Not just by the order in which messages are put in the queue, but based on jms headers (sequence comes into mind, ) in combination with redelivery delay and redelivery count. Not only for ebMS, but for WS-Reliability* as well.

      Is there any change JBoss will extend JMS with this functionality or even participate in the JCP to enhance JMS with this functionality. The thing is that parts of this are already in JMS, but a full functioning combination is (to my knowledge) not.

      If someone could point me in the right direction of a designpattern to implement this, that would be great.

      Ronald

        • 1. Re: ordered (re) delivery etc.. / ebMS
          Adrian Brock Master

           

          "kukeltje" wrote:
          Hi,

          I've been working with Hermes, the freebXML ebMS server. They have developed lots of things that are already in J2EE (like transactions, a connectionpool) for resons beyond *my* comprehension. Users say they just want to be able to run it in a simple servlet engine, so anything other than a j2ee server (it was even mentioned that the would build their own servlet engine or plain http server). Since Tomcat as well as Jetty already have transaction and connectionpool support, to me it is like reinventing the wheel, but that is their choice.


          This is an FAQ (of sorts):
          http://www.jboss.org/wiki/Wiki.jsp?page=I+want+to+plugin+a+custom%2Fthirdparty+DataSource


          One other issue is that ebMS has something called ordered delivery, redelivery delay and redelivey count. Hermes also implemented this themselves, but It would be realy great if JMS would support something like this. Not just by the order in which messages are put in the queue, but based on jms headers (sequence comes into mind, ) in combination with redelivery delay and redelivery count. Not only for ebMS, but for WS-Reliability* as well.


          JBossMQ already has redelivery delay/count
          There is currently no mechanism to override the spec defined order of
          priority/arrival sequence, but I would accept a patch that allowed a
          Comparator to be defined per Queue/Topic.


          Is there any change JBoss will extend JMS with this functionality or even participate in the JCP to enhance JMS with this functionality. The thing is that parts of this are already in JMS, but a full functioning combination is (to my knowledge) not.


          I would doubt this would make it into JMS spec.
          JMS is a lowest common denominator spec designed to plug disparate
          messaging systems.
          It is a "quality of implementation" issue.

          • 2. Re: ordered (re) delivery etc.. / ebMS
            Ronald van Kuijk Master

             

            JBossMQ already has redelivery delay/count

            I know, the specs (and comment in the jboss code) specifically state however that ordered delivery of redelivered messages is not gueranteed. This would be a first addition I think. Bea also does this and mentiones this as a unique selling point. A second addition would be a kind of windowing mechanism, which could be achieved partly by using a session and not realy acknowledge e.g. message 1...5 but these have to be kept at hand since an ack on message 5 also acks all previous messages in that session (in accordance with the spec)

            There is currently no mechanism to override the spec defined order of
            priority/arrival sequence, but I would accept a patch that allowed a
            Comparator to be defined per Queue/Topic.


            You mean a comparator for the TreeSet that is used in the BasicQueue? Nice thinking. This could be parameterized so the names of jms headers could be passed to it and used for the sorting. But would it also add the possibility of ordered delivery of redeliverd messages? Probably not, but I did not look in the code yet on that part. Besides that, I have no idea how the TreeSet would be passed this new comparator, let alone a comnfigurable comparator.

            I would doubt this would make it into JMS spec.
            JMS is a lowest common denominator spec designed to plug disparate
            messaging systems.


            I know, but it would be a waste of already good functioning code (jms) if it does not fit the new, higler level, specs. The jms specs should (im(ns)ho) be more in line with these.

            Ronald

            • 3. Re: ordered (re) delivery etc.. / ebMS
              Adrian Brock Master

               

              Besides that, I have no idea how the TreeSet would be passed this new comparator, let alone a comnfigurable comparator.


              Look at how ReceiversImpl is configured.