The
Distributed Message Hub (DMH ) is a high-level software
facility providing inter-process communication for
applications executing within a TCP/IP network. The DMH
provides functionality that is similar to the familiar
message and message queue API families, as provided by
products such as CELLworks, DECmessageQ, MQseries, MSMQ,
and QNX. The DMH
provides transparent support for message distribution
across multiple workstations. Unlike some competing
products, there is no distinction between executing on a
single workstation versus multiple workstations.
Therefore, there are no additional complexities to the
startup, and there is no explicit configuring or
linking of participating workstations.
The DMH is provided as a
server component that manages message queues, as client
code for message communication that is available for a
wide variety of platforms, and as a gateway component that
interconnects independent communication groups. An
application process such as the Hume
Datahub can execute the DMH server component on behalf of all the communicating
client processes in a group. DMH client software is
available for .NET, Visual Basic applications or other
Active-X platforms, for Java applications or
applets, and for POSIX C/C++ applications.
Client processes on one
or more hosts can be started, terminated normally,
terminated abnormally, and restarted without affecting
or disrupting the DMH server component or other client
processes. Workstations that are executing client
programs on the TCP/IP network may be taken offline, or
rebooted, and then brought back online. When the
workstation is back online, restarted client programs
may attach to the existing DMH server, and resume
application functions.
Native TCP/IP and
operating system facilities are utilized for name
resolution, permissions, performance tuning, and other
low-level services. Unlike competing products there is
no need for device drivers, additional networking
daemons, configuration files, diagnostic utilities, or
similar artifacts of duplicated system functions.
The DMH is a high-level
facility. The application developer deals with text
messages and named message queues, not with data
marshalling, protocol conversions, retries, and
timeouts. Typically the messages are SQL or Tcl commands
that are executed by the SDK software, so there is no
need to specify message formats or to develop message
parsing code. The DMH is well suited for the development of CIM applications where the efficient utilization of the
development staff is a priority.
The DMH is efficient.
Multiple high speed testers can send hundreds or even
thousands of messages per second to a
Datahub
where the data can be manipulated in real-time and
organized in SQL relational database tables. Using the
subscription features of the Datahub, the
acquired data can be fed into a persistent database such
as Oracle, and fed to multiple user interfaces across
the TCP/IP network.
The use of asynchronous
messaging as provided by the DMH is preferred to RPC-based
solutions in the CIM arena for several reasons. First,
the use of message queues permits fast rate processes
such as test floor data acquisition to be connected to
slow rate processes such as the interface to a
persistent database. The queuing management provided by
the DMH smoothes over the peak loads of the production
cycle. In this example, the data acquisition interface
and the database interface are written as simple,
single-threaded clients of the DMH message server. The
complexity of managing the rate mismatch is borne by the
message system, and not by the application developer.
Another advantage of DMH
messaging is that it provides a dynamic connection
interface. In a distributed factory system that is
running around the clock, it is vital to be able to
bring component processes off-line or on-line in perfect
synchronization. Common examples of dynamically
connected processes are user interface sessions and
equipment interfaces. Being able to dynamically connect
or disconnect from the distributed application is a key
requirement.
The message queue
interface of an application also provides a testing
interface for development work, debugging, and
verification. Here the use of plain text messages such
as SQL statements or Tcl statements instead of binary
messages is a strength; test messages and test suites
can be created without the use of a compiler. |