Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 35 Next »

Info

The Sakai MessageService integrates JMS with Sakai and exposes the JMS API as a service. ActiveMQ is used as the JMS implementation.

News

  • 2008-02-13 : Switch to full spring configuration.
    • org.sakaiproject.messageservice.JmsConnectionFactory accessible via Spring declaration.
    • Retained org.sakaiproject.messageservice.api.MessageService for direct JMS implementation.
    • Changed ActiveMQ to version 5.1 to fix 'hanging' broker and client during shutdown problem.
  • 2008-02-04 : Applied some Bugfixes to the messageservice based cluster service. This should be ready for initial testing now
  • 2008-01-29 : Extended MessageService API to allow to create a connection with username and password
  • 2008-01-26 :
    • Extended MessageService API by adding "public Connection getConnection()"
    • Created MessageService sakai_2-4-x branch, which uses ActiveMQ v4.1.1
  • 2008-01-23 :
    • Finished first round of converting Sakai Cluster Service to use the Message Service. Performed initial testing in a two node setup.
    • Requested Sakai Foundation JIRA Branch for Sakai Cluster Service using Message Service: http://bugs.sakaiproject.org/jira/browse/SAK-12797

Source Code

Documentation JMS v1.1

Usage

The MessageService API is very simple and exposes the following methods:

  /*
   * Creates a JMS connection with the default user identity. The connection is 
   * created in stopped mode. No messages will be delivered until the 
   * Connection.start method is explicitly called.
   * 
   * @return a newly created JMS connection. May return null
   * 
   */
   public Connection createConnection();
	
  /*
   * Creates a JMS connection with the specified user identity. The connection is 
   * created in stopped mode. No messages will be delivered until the 
   * Connection.start method is explicitly called.
   * 
   * @parameter userName - the caller's user name
   * @parameter password - the caller's password
   * 
   * @return a newly created JMS connection. May return null
   */
   public Connection createConnection(String userName, String password);
	
  /*
   * Gets the JMS Connection with the specified user identity, configured in components.xml
   * The connection is returned in start mode.
   * 
   * @return the initially created JMS Connection object. May return null
   * 
   */
   public Connection getConnection();

MessageService (JMS) Best Practices

  • JMS Connection Object
    • Usually there is no need to create more than one JMS Connection object, and the ActiveMQ documentation and AQM Forum posts recommend to create/use only one connection object per server. Thus, in Sakai, we should use only one connection by calling getConnection(). In rare cases, it's justified to create a second connection.
  • JMS Session

Configuring

  • Sakai Properties

    Property

    Default Value

    Comments

    jms.useJMX

    false

    If you have tomcat configured to allow JMX access, I would recommend to enable this setting as it greatly helps during the development process

    jms.brokerURL

    tcp://localhost:61616

    -

    jms.brokerDataPath

    sakai-home location

    This is either in "tomcat/sakai" or the location defined by JAVA_OPTS "-Dsakai.home=/path/to/sakai-home/"

  • On each application node, you need to enable the following ports and protocols in your host based firewall
    • TCP port 61616
    • UDP port 6155
    • e.g. Linux iptables
      -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 192.168.1.0/24 --dport 61616 -j ACCEPT
      -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp -s 192.168.1.0/24 --dport 6155 -j ACCEPT
      

Building The MessageService sakai_2-4-x Branch (Maven 1)

Using MessageService in existing Sakai services and tools

  • No labels