Sonic Queue (SonicQ) Scripting
CygNet utilizes Sonic's COM functions to communicate with their queue objects. Full communication in script with a queue has four separate steps: connection, receiving, sending, and browsing.
Important: To allow the following scripts to be run successfully, a SonicQ broker must be online and configured according to Sonic's recommendations.
Scripting Options
CygNet communicates with the SonicQ Broker with the following scripting options: Connection, Receiving, Sending, and Browsing.
Connection
To send, receive, or browse a queue, first the script must establish a connection. Establishing a connection is the most complicated process in Sonic's COM library. It requires the use of four separate objects: Factories, Connections, Sessions, and Queues.
Factory — A Factory is the object that creates and establishes communication with the queue. Once established it creates the Connection object. The Factory must be given the URL of the queue, as well as the username and password required for security.
|
Dim factory Set factory = CreateObject("JMSCOMClient.JMSQueueConnectionFactory") Call factory.initialize5(browserURL, username, password) |
Connection — A Connection is the object created by a Factory that creates Sessions with a queue. Only a single Factory is needed to create many Connections to a queue.
|
Dim connection Set connection = factory.createQueueConnection connection.start |
Session — A Session is created by a Connection and serves as the means for sending and receiving messages from the queue. It also creates a Queue object, which specifies the queue to communicate with during sending and receiving.
|
Dim session Dim queue Set session = connection.createQueueSession(False, 1) Set queue = session.createQueue(queueName) |
With a Session and a Queue, the script can create the objects necessary for sending, receiving, and browsing.
Receiving
To receive a message off a Sonic queue, first the script must create a Receiver. This requires a Session and Queue object.
|
Dim receiver Set receiver = session.createReceiver(queue) |
Now, the receiver may be set up to read messages off the queue defined for the session.
|
Dim message Set message = m_receiver.receive message.acknowledge |
In the above example, the variable 'message' will have the contents of the first message off of the queue.
Sending
To send or write a message off to a Sonic queue, first the script must create a Sender. This requires a Session and Queue object.
|
Dim sender Set sender = session.createSender(queue) |
Now, the receiver may be set up to write messages to the queue defined for the session.
|
Dim message message.setText msgText Call sender.send(m_message) |
In the above example, the contents of the variable 'msgText' have been written to the queue.
Browsing
Receiving a message requires the receiver to ask if a message is available, that is, if the queue has a message in it. If the queue is empty, a receive operation with return nothing. Browsing will wait for a message to be put on the queue and return it as soon as it is available.
To browse a Sonic queue, first the script must create a Browser, which creates a Browser Enumeration. This requires a Session and Queue object.
|
Dim browser Dim browserEnum Set browser = session.createBrowser(queue) Set browserEnum = browser.getEnumeration |
To check if a queue has any messages, call the following function of the Browser Enumeration:
|
browseEnum.hasMoreElements |
To read the next message on the queue, you ask for the variable 'next element.'
|
Dim message Set message = browserEnum.nextElement |
In the above example, 'message' has the contents of the next message off the queue.


