1 / 22

OpenJMS

OpenJMS. An Open Source Implementation of the JMS Specification. Jim Alateras Intalio Inc. Contents. JMS Specification History of OpenJMS Existing Architecture Work In Progress Deployment Development Environment Current Release Future Direction Q & A. JMS Specifications.

morse
Download Presentation

OpenJMS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OpenJMS An Open Source Implementation of the JMS Specification Jim Alateras Intalio Inc.

  2. Contents JMS Specification History of OpenJMS Existing Architecture Work In Progress Deployment Development Environment Current Release Future Direction Q & A

  3. JMS Specifications Two Messaging Models - Queues and Topics Persistent and Non-Persistent Message Delivery Five Message Types - Text, Byte, Object, Map and Stream Synchronous and Asynchronous message consumption Selectors, priority, QueueBrowser Local and distributed transactions

  4. JMS Specifications - Queues Sender publishers to the Queue and Receiver consumers Supports multiple senders/receivers per queue Message Ordering Undefined Delivery semantics for > 1receiver Non-persistent messages delivered at most once Persistent messages delivered exactly once

  5. JMS Specifications - Topics Publisher publishes and Subscribers consumes Multiple publishers/subscribers per topic Subscriber each receives own copy of messages Priority effects message delivery order Persistent and non-persistent delivery semantics

  6. JMS Providers JMS Providers distribute JMS compliant components/products 21 vendors have a JMS offering Four Open Source offerings including OpenJMS, ObjectCube, Joram and spyderMQ A number of commercial products including MQSeries, FioranoMQ and SonicMQ No compliance test suite available to compare the various offerings No industry benchmarks to compare performance

  7. History of OpenJMS Sponsored by the Exolab Group (OpenOrb, OpenEJB) Started in Feb-2000 3 core developers based in Melbourne V0.1 released in May-2000 (pub-sub, p2p, non-persistent, rmi) V0.2 released in Jun-2000 (jdbc-based persistence, gui, application, testharness) V0.3 released in Aug-2000 (tcp, temporary destinations, database caching, selectors) V0.4 released in Oct-2000 (bug fixes, initial queue browser, more client test coverage) V0.5 released in Dec-2000 (wild card sub, queue browser and flow control)

  8. OpenJMS Architecture Service based adaptive architecture Initial focus was on time-to-market and features (RMI and JDBM) Subsequently released more widely used adaptors (TCP, JDBC) Failed to initially architect for availability and scalability Second iteration is focusing on failover, clustering and load balancing In the end the architecture was quite tolerable to change.

  9. Server Internals

  10. OpenJMS Configuration XML based configuration file generated from Castor tool Server configuration <element name="ServerConfiguration"> <complexType content="empty" > <attribute name="serverClass" type="string" maxOccurs="1"/> <attribute name="clusterName" type="string" minOccurs="0" maxOccurs="1" /> <attribute name="jmsServerName" type="string" maxOccurs="1"/> <attribute name="jmsAdminServerName" type="string" maxOccurs="1"/> </complexType> </element <PersistenceAdapterConfiguration minConsumerListSize="10000" minMessageListSize="40000" persistentType="RDBMS" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:oci8:@test" userName="jim" password="ab1234" retries="5" timeout ="2000" /> Administered Destinations Participants and Authentication Persistent adaptors

  11. JNDI Integration Client uses JNDI to lookup factories and destinations Run an embedded JNDI provider Connect to an external JNDI provider Automatic object registration at start-up

  12. Administration GUI Initial Administration GUI deployed with v0.2 New Administration GUI available in v0.6 Create administered destinations Register durable subscribers Start and stop the server Purge persistent messages for a destination

  13. Stateless Connections (WIP) Original server maintained stateful client information Compicates failover and dynamic load balancing New architecture moves to stateless Client information is now part of the request context Facilitates failover since client is not tied to a particular server Facilitates dynamic load balancing

  14. OpenJMS Clustering (WIP) OpenJMS will support clustering Servers in the cluster share the same resources Multicast channel for inter server comms Client uses multicast channel for connection Client failover confined to the cluster Clients load balanced within the cluster You can configure multiple independent clusters

  15. Security (WIP) Security is not specified by the JMS Specifications OpenJMS uses JAAS for Authorization and Authentication Authentication is based on participants Participants are associated with an authentication data source Authorization is fine grained and based on destinations, participants and actions Supported actions are publish, consumer, browse and administer. Security can be turned off

  16. Deployment Standalone Server Configuration Symmetric Federated Configuration Asymmetric Federated Configuration Cluster Configuration

  17. Development Environment Jakarta ANT as the project build tool JTF (but will move to Junit for unit testing) OpenExec for load and performance tests Bugzilla for bug management Castor’s SourceGen for configuration ANTLR for selectors A host of open source libraries including log4j and Tyrex

  18. Current Release Publish-Subscribe and Point-to-Point Persistent and Non-Persistent Message Delivery Message Selectors, Priority and QueueBrowser Synchronous and asynchronous message consumption Administration GUI Stand alone or embeddable server Local transactions Test cases and extensive examples

  19. Future Direction Refactored messaging core New administration GUI IIOP and SSL support Clustering and federation support Explicit support for XML messaging Improved performance of the messaging core Complete ASF support which includes session pools and XA.

  20. Resources OpenJMS http://openjms.exolab.org JMS Specifications http://java.sun.com/products/jms Castor, Tyrex http://www.exolab.org ANTLR http://www.antlr.org Jakarta ANT and Log4j http://jakarta.apache.org JUnit http://www.junit.org Open Source Initiative http://www.opensource.org

  21. Q & A

  22. Thank you

More Related