1 2 Previous Next 15 Replies Latest reply on Nov 23, 2010 1:31 PM by jackalista

    Advanced MessageStore implementation

    derry

      I am thinking about an advanced MessageStore implementation. From my point of view a MessageStore should have following features:

      Search for messages based on

      Header information
      Properties
      Message body
      Type
      Attachments (?)

      Performant on writing, searching, changing messages (documents)
      Flexible installation: file-based, DB-based, ...


      I good basis for a MessageStore can be a JSR-170 content repository like Apache Jackrabbit or Exo Platform. It has already all features for storing, searching and changing structured information like XML. We can support changing of messages in a traceable way because this repositories allow us to do versioning as well.

      What do you think?

        • 1. Re: Advanced MessageStore implementation
          marklittle

          The aims you mention are certainly in line with the original intention of the MessageStore, though it's not there yet. If you want to look at extending that, perhaps with a JSR-170 backend implementation, that would be great. However, we don't want to expose backend implementation issues (such as JSR-170, or plain filesystem etc.) through the MessageStore interface.

          • 2. Re: Advanced MessageStore implementation
            marklittle

            Let me explain further. The MessageStore interface is basic at the moment, so does need extending. One way to do this would be to standardise on JSR-170. Another would be to have our own interface that may look similar to JSR-170, but narrower in terms of what is required for backend implementations (after all, we're not trying to make the MessageStore a general content repository: it will only ever store Messages). The latter approach is what the group agreed back in June 2006.

            I haven't looked at JSR-170 in depth, but storage repositories with search and indexing facilities have existed for many years. We don't want to do anything that would preclude users plugging them into the MessageStore. Do you think that it would be easy for non-JSR-170 implementations to be plugged into a JSR-170 based API? Or are we right to stick with the current plan?

            • 3. Re: Advanced MessageStore implementation
              bill.burke

              What advantage does implementing a message store for ESB have over just using our JMS implementation? Why is esb implementing what JMS already has?

              • 4. Re: Advanced MessageStore implementation
                marklittle

                Daniel was driving this, but if JMS has one then we should be able to plug that in as one of the possible backend implementations. As long as it can cope with arbitrary data.

                • 5. Re: Advanced MessageStore implementation
                  marklittle

                  BTW, I believe current implementations are JDBC and Hibernate.

                  • 6. Re: Advanced MessageStore implementation
                    marklittle

                    I took a quick look at http://labs.jboss.com/file-access/default/members/jbossmessaging/freezone/docs/javadoc/api-1.0.1.SP4/org/jboss/messaging/core/plugin/contract/MessageStore.html and there certainly seems to be something we could base an implementation on. I'll check with Tim when he returns to see if there's any advanced search and indexing facilities. If not, we can always implement them ourselves.

                    • 7. Re: Advanced MessageStore implementation
                      derry

                      Sorry guys! I was not precise enough for you to understand what the goal of such an implementation would be:
                      It should be a base for transaction analysis tool where you can look at all the messages (or parts of it) that have flown through your system. I am pretty sure that you agree that this is not possible with a MessageStore implementation that is in place in ESB nor with the one from the Messaging code (I had a look at this, too).

                      CU
                      Thomas

                      • 8. Re: Advanced MessageStore implementation
                        marklittle

                         

                        "tpeuss" wrote:
                        Sorry guys! I was not precise enough for you to understand what the goal of such an implementation would be:
                        It should be a base for transaction analysis tool where you can look at all the messages (or parts of it) that have flown through your system.


                        Yes, that's the original intention of the MessageStore. We want to provide something that can be used for audit trail purposes, distributed debugging etc. We also want to link it in with CBR, so messages can flow to their destinations and also a copy can be routed to the store.

                        I am pretty sure that you agree that this is not possible with a MessageStore implementation that is in place in ESB nor with the one from the Messaging code (I had a look at this, too).


                        The current store is a black box I believe. Hence my comments about needing to extend the API. As for the JBM implementation, I will have to check with the team to see about its applicability.

                        • 9. Re: Advanced MessageStore implementation
                          bill.burke

                          Maybe looking at some ESP project might be good to flush out further requirements?


                          http://www.streamcruncher.com/

                          • 10. Re: Advanced MessageStore implementation
                            derek.adams

                            If you guys are interested, we implemented a basic JSR-170 (Jackrabbit) MessageStore a few weeks back. With work on MR1, it was put on the backburner, but I will push it into the trunk if there are not any objections.

                            • 11. Re: Advanced MessageStore implementation
                              marklittle

                              Sure, thanks.

                              • 12. Re: Advanced MessageStore implementation
                                derek.adams

                                I checked the JCR message store code into the trunk. The required configuration files and libraries are now bundled in the jbossesb.sar during the build. There are two basic configurations: load the JCR repository from JNDI or initialize it from the repository.xml in the root directory of the sar.

                                To enable the JCR message store, add the following line to the "core" section of the jbossesb-properties.xml:

                                <property name="org.jboss.soa.esb.persistence.base.plugin.jcr" value="org.jboss.internal.soa.esb.persistence.format.jcr.JCRMessageStorePlugin"/>
                                


                                To configure the message store, add the following properties to the "dbstore" section of the jbossesb-properties.xml:

                                <property name="org.jboss.soa.esb.persistence.jcr.jndi.path" value="jcr"/>
                                <property name="org.jboss.soa.esb.persistence.jcr.username" value="username"/>
                                <property name="org.jboss.soa.esb.persistence.jcr.password" value="password"/>
                                <property name="org.jboss.soa.esb.persistence.jcr.root.node.path" value="JBossESB/MessageStore"/>
                                


                                If the "jcr.jndi.path" property is not specified, the repository will be configured locally using the repository.xml in the root of the sar.

                                The "jcr.username" and "jcr.password" are passed to the repository to get a session.

                                The "root.node.path" property determines the relative path in the repository under which message nodes will be stored.

                                An easy test for whether the JCR message store is configured properly is to add the org.jboss.soa.esb.actions.persistence.StoreJCRMessage action onto an existing service. The action will attempt to store the current message to the JCR store.

                                Let me know if you run into any problems.

                                Thanks,
                                Derek

                                • 13. Re: Advanced MessageStore implementation
                                  marklittle

                                  Derek, just checking: did you update the administrator's guide with these required configuration changes? I want to make sure all of the docs are up-to-date so the ESB deployment is self-contained. Don't want users to have to keep running back to the forum to check for things like this if possible. Thanks.

                                  • 14. Re: Advanced MessageStore implementation
                                    derek.adams

                                    I checked in the documentation updates to the .odt and .pdf

                                    1 2 Previous Next