r6 - 09 May 2007 - 22:11:53 - Main.eturnerYou are here: TWiki >  Main Web > ServerConfiguration > ORMQObjects

ORMQ Objects Overview

ORMQ? provides AlchemyPoint Server with advanced decentralized messaging capabilities, similar to those provided by J2EE? JMS messaging solutions. Access to ORMQ? messaging is provided through a variety of configuration objects, to allow for the creation of ORMQ? Providers, protocol listeners, named message queue destinations, queue subscriptions, ORMQ? client connections, etc.

The core of the ORMQ messaging system is the ORMQProvider, responsible for servicing client connections, creating and managing ORMQDestination queues, persisting durable messages to disk, etc. Multiple ORMQProvider instances may be utilized simultaneously within a single AlchemyPoint Server configuration, allowing for a variety of different messaging scenarios.

ORMQ client connections are handled by a Provider through the use of an ORMQ listener (ORMQSocketListener, ORMQPipeListener, ORMQMemListener). Multiple listeners may be embedded within a Provider, allowing for simultaneous communcation over a variety of messaging transports (TCP sockets, interprocess communcations pipes, local shared-memory streams).

A locally-running Provider is not required to utilize ORMQ? messaging within AlchemyPoint Server. Connections to other Providers, running remotely or locally, can be made through the use of an ORMQ connection object (ORMQSocketConnection, ORMQPipeConnection, ORMQMemConnection). Multiple connection objects may be embedded within a single AlchemyPoint Server configuration, allowing for simultaneous communication to multiple ORMQ? Providers, running locally or remotely, over a variety of messaging transports (TCP sockets, interprocess communcations pipes, local shared-memory streams).

Named ORMQ message queue destinations may be created using an ORMQDestination configuration element. Multiple named queue destinations may be exist, each with their own delivery and persistence settings. Named queues may be subscribed to using an ORMQSubscription or ORMQInputConnector configuration element. ORMQOutputConnector objects may also be utilized to allow for rate-limit and message pipelining control over data sent to an ORMQ queue.

Supported ORMQ Objects

Provider:

  • ORMQProvider - Instance of an ORMQ Provider. The Provider is the core of the ORMQ messaging system, responsible for servicing client connections, creating and managing ORMQDestination queues, persisting durable messages to disk, etc.


Provider Listeners:

  • ORMQSocketListener - Embedded within an ORMQProvider, this object creates a TCP socket listener instance. Multiple socket listeners may be bound to a single Provider, each with their own unique SSL / authentication / messaging settings. Socket listeners are useful when remote ORMQ clients need to connect to a Provider over a TCP/IP network.

  • ORMQPipeListener - Embedded within an ORMQProvider, this object creates an interprocess communications pipe listener instance. Multiple pipe listeners may be bound to a single Provider, each with their own unique authentication / messaging settings. Pipe listeners are useful when system processes running on the same physical host as AlchemyPoint Server needs to access ORMQ message queues. Pipes may not be utilized remotely, but can be utilized across system "process" boundaries. Pipe messaging is faster than socket-based communcation, but slower than memory-based messaging.

  • ORMQMemListener - Embedded within an ORMQProvider, this object creates a local shared memory stream listener instance. Multiple memory listeners may be bound to a single Provider, each with their own unique authentication / messaging settings. Memory listeners are useful when an AlchemyPoint Server needs to access its own message queues in a local fashion. Memory-based messaging may only be utilized locally within the scope of a single AlchemyPoint Server; it is the fastest form of ORMQ messaging.


Client Connections:

  • ORMQSocketConnection - This object creates a socket connection to an ORMQ Provider. This Connection object may be utilized for connecting to local or remote Providers, but is generally used for remote connections as Memory and Pipe ORMQ connections are faster than sockets for local communications.

  • ORMQPipeConnection - This object creates an interprocess communications pipe connection to an ORMQ Provider. This Connection object may be utilized for connecting to local Providers (running on the same physical host) running in other process contexts. It is useful if multiple AlchemyPoint Server instances are running on a single physical machine and need to intercommunicate.

  • ORMQMemConnection - This object creates a shared memory-stream connection to an ORMQ Provider. This Connection object may only be utilized for connecting to Providers running within the same "process-space" of an AlchemyPoint Server. It may be utilized for fast internal messaging within an AlchemyPoint server, but not for remote communications or interlinking multiple distinct AlchemyPoint Server instances running on the same physical host.


Queues / Subscriptions:

  • ORMQDestination - A named queue residing on an ORMQProvider. These queues may be written to (via a DispatcherSource? , InputConnector or any of the ProtocolListeners), or subscribed to. ORMQ queues support a variety of delivery and reliability options, to operate successfully in a variety of messaging scenarios.


Connector Facades:

  • ORMQInputConnector - Input connector object that accesses named queue destinations on an ORMQ Provider in a polling fashion, checking for new messages on a regular interval. This object differs from an ORMQSubscription in that messages are only retrieved from the queue on an interval, versus being processed as soon as they are available.

  • ORMQOutputConnector - Output connector object that posts messages to an ORMQ named queue destination using rate limiting and pipelining. This object is useful when it is necessary to limit the speed at which messages are posted to an ORMQ queue, as ORMQDestination does not inherently support any sort of rate / message limiting capabilities.
Edit | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r6 < r5 < r4 < r3 < r2 | More topic actions

tip TWiki Tip of the Day
Edit tables with EditTablePlugin
The EditTablePlugin allows you to edit TWiki tables using edit fields and drop down boxes. Tables have ... Read on Read more

 
Powered by TWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback