|
Application Messaging
With MSMQ messaging, two or more applications communicate with each other
indirectly and asynchronously using message queues. The applications
do not have to be running at the same time or even in the same operating environment.
An application wishing to communicate with another application simply sends a message
to a queue. The receiving application retrieves the message when it is ready.
A typical SAS program using MSMQ services performs the following tasks:
A program must first either open an existing queue or create a new queue.
A function is available to help find queues based on their property values.
If opening an existing queue, the program supplies a queue identifier to select
the appropriate queue. If creating a new queue, a queue identifier is returned
to the program to be used in subsequent calls. The queue identifier is used by
MSMQ in a distributed database that
maintains information about users, queues, queue managers, host machines,
and network layout. This database is referred to as the MSMQ Information Store
(MQIS) and helps to insulate the application developer from the details of the
network.
When creating a queue, you can declare it public or private. Public
queues are registered in the MQIS and can be accessed throughout the network.
Private queues, on the other hand, can be accessed only by systems that know the
queue's full path name or format name. Other properties can be set when creating
a queue such as security, message handling, and types of services provided by the
queue. These same types of properties can also be retrieved from or set on a queue
that has been opened.
A program that has opened a queue can compose and send a message. To
compose a message, a function is used to identify a data map which describes the
format, the number and the type of parameters to be sent as part of the message.
The data map is used by a function that creates a data descriptor of the actual
values of the SAS variables to be included in the message. If your distributed
application uses a Microsoft Transaction Server (MTS), a transaction object can
be used to send the message based on the success of the transaction.
A program can also retrieve messages from an opened queue. MSMQ uses the
concept of a cursor to identify the location of the message within a queue.
A message can be read from the current cursor location or you can peek at the
next location. When a message is read, the program can elect to remove the
message or leave it on the queue. In addition, a number of message properties
such as security issues, size, identification, and statistics on the delivery
can also be retrieved.
After a program has sent or retrieved all its messages, queues can also be
closed or deleted. This releases the resources allocated when the queue was
opened or created.
Note: MSMQ uses several different representations to identify a queue,
such as format name, pathname, instance GUID, and queue handle. There are
functions available that you can use to convert between representations.
|