Transports and Interfaces: Siebel eBusiness Application Integration Volume III > EAI MQSeries Transports > Siebel EAI MQSeries Transports >

EAI MQSeries Server Transport


Before using the EAI MQSeries Server Transport, you need to install and configure IBM MQSeries software. Contact your IBM sales representative for details.

Configuring the EAI MQSeries Server Transport

The Siebel EAI MQSeries Server Transport is designed to provide a messaging solution to help you integrate data between Siebel eBusiness Applications and external applications that can interface with the IBM MQSeries. The EAI MQSeries Server Transport transports messages to and from IBM MQSeries queues.

NOTE:  The EAI MQSeries Server Transport can connect only to IBM MQSeries Server software. The EAI MQSeries AMI Transport can connect to IBM MQSeries server as well as the IBM MQSeries client. The IBM MQSeries server must be running on the same system with your Siebel Server.

The EAI MQSeries Server Transport supports the inbound and outbound methods described in the Outbound Methods and Inbound Methods.

Using the SendReceive Method with MQSeries

The SendReceive method on the EAI MQSeries Server Transport sends a message and waits for a response from the target application on a response queue. This response message corresponds to the original message using the correlation ID in MQSeries.

NOTE:  It is the responsibility of the external application to set the correlation ID of the response to the Siebel eBusiness Application to the message ID of the original message.

Using the EAI MQSeries Server Transport on AIX

When you use the EAI MQSeries Server Transport on AIX, the shared memory segment required by the EAI MQSeries Server process can collide with the shared memory segment required by the queue manager. By default, the EAI MQSeries queue manager tries to use shared memory segment number 8. The EAI MQSeries Server Transport does not rely on any specific number and uses whatever segment is given to the process by the AIX operating system.

However, if you are using the default configuration, there is a possibility that the EAI MQSeries Server process gets segment number 8 from the operating system first, and as a result the queue manager cannot get its segment. In this case, the MQSeries Server Transport service fails with an error code of 2059 because it cannot connect to the queue manager.

To fix a shared memory segment conflict with the EAI MQSeries Server Transport 5.2 on AIX

  1. Shut down any queue manager connected to the EAI MQSeries Transport.
  2. Edit the file /var/mqm/mqs.ini. In the QueueManager section, for each queue manager of interest, add an additional line explicitly specifying the shared memory segment to use. For example:
  3. QueueManager:
    Name=myQueueManager
    Prefix=/var/mqm
    Directory=myQueueManager
    IPCCBaseAddress=12

  4. Restart each queue manager.

NOTE:  This example shows shared number 12 used as the memory segment number. Possible legal values for the IPCCBaseAddress are: 4, 5, 8, 9, 10, 11, 12 although 8 has been found to be problematic. It is possible to run into this error even with the memory segment number set as 12 if the operating system has non-deterministically allocated segment 12 to the EAI MQSeries Server process ahead of the queue manager. If this is the case, a different segment number may need to be specified.

If the EAI MQSeries Server Transport business service on AIX continues to fail even after you have followed the previous procedures, you can configure the AIX environment to run Siebel Server with less memory using environment variable LDR_CNTRL. After you have finished, follow the procedures in the preceding section.

To configure the AIX environment to run Siebel Server with less memory

  1. Shut down Siebel Server.
  2. In the shell that you use to bring up Siebel Server, set the environment variable LDR_CNTRL. Using csh:
  3. setenv LDR_CNTRL MAXDATA=0x30000000

    NOTE:  You can save the setting in the siebenv.sh or siebenv.csh.

  4. Restart Siebel Server with this environment variable.

EAI MQSeries Server Transport Parameters

In addition to supporting the common transport parameters presented in Table 4, the EAI MQSeries Server Transport also uses the parameters shown in Table 5. These can be specified as either service method arguments, subsystem parameters, or user properties.

NOTE:  In order to send to a model queue, the model queue must have a definition type of PERMANENT and the following arguments must be supplied in the workflow process: Model Queue, Physical Queue, Queue Manager, and Message Text.

Table 5.  EAI MQSeries Server Transport Specific Parameters
Argument
Display Name
Description
MqAcknowledgements
Receive Acknowledgements
Default is False. This parameter specifies whether or not delivery and arrival acknowledgements are to be received.
MqAckPhysicalQueueName
Acknowledgement Physical Queue Name
If the MqAcknowledgements is set to True, this parameter contains the name of the physical queue for acknowledgements to responses.
MqAckQueueManagerName
Acknowledgement Queue Manager Name
Defaults to MqQueueManagerName if unspecified. If MqAcknowledgements set to True, this parameter contains the name of the queue manager for acknowledgements to responses.
MqModelQueueName
Model Queue Name
Name of the MQSeries model queue.
MqPhysicalQueueName
Physical Queue Name
Name of the MQSeries physical queue. You can also create an alias queue which points to a target queue and use the alias queue name as the input argument physical queue name and send messages to the target queue.
MqQueueManagerName
Queue Manager Name
Name of the MQSeries queue manager. If this parameter is not specified, the default Queue Manager Name, as specified in the MQSeries configuration, is used.
MqRespModelQueueName
Response Model Queue Name
Name of model queue for response connection. The Response Queue Manager is the same as MqQueueManagerName.
MqRespPhysicalQueueName
Response Physical Queue Name
Name of physical queue for response connection.
MqFormat
MQSeries Format
The format of the message from the Siebel application to the outbound queue.
MqSleepTime
Sleep Time
Default is 20000 milliseconds. The timeout interval on receive calls, in milliseconds.

In addition to the EAI MQSeries Server Transport, you can run the MQSeries Server Receiver, which is a server component that periodically checks the MQSeries queues you specify, for inbound messages.

NOTE:  The persistence of the message is the same as the persistence of the queue itself.

Dispatch Error Handling for the EAI MQSeries Server Transport

When using ReceiveDispatch and ReceiveDispatchSend methods, you need to be aware of specific MQSeries behavior that might affect your messages.

NOTE:  The transaction does not end when the message is received from the queue because it waits for the entire dispatch process to either complete successfully for commit or fail for rollback.

If all the following conditions are met, the message is sent to the Backout Requeue Queue of the current queue manager:

NOTE:  If the Backout Requeue Queue has not been specified for the Queue Manager, then the message is sent to the Dead Letter Queue of the current queue manager. If there is no specified Dead Letter Queue for the current queue manager, then the queue defaults to the SYSTEM.DEAD.LETTER.QUEUE.

Exposing MQMD Headers as Properties

The EAI MQSeries Server Transport feature exposes all the MQMD headers as properties of a property set.

You can set any MQMD message header for the Siebel application by specifying it as property in a property set on the outbound side. Whereas on the inbound side, the MQMD message header of the response is exposed to the user as property on the output property set.

On the inbound side you can have all the MQMD message headers as part of the output property set without having to do extra steps to see these MQMD message headers.

On the outbound side, you can set the MQMD message headers using EAI MQSeries Server Transport.

Table 6 summarizes the MQMD message headers that are exposed as properties in a property set.

Table 6.  MQMD Message Headers
Field
DataType
Description
Input/Output Property
StrucId
MQCHAR4
Structure Identifier.
Not exposed.
Version
MQLONG
Structure version number.
Output.
Report
MQLONG
Options for report messages.
Output.
MsgType
MQLONG
Message type.
Input and output.
Expiry
MQLONG
Message lifetime.
Input and output.
Feedback
MQLONG
Feedback or reason code.
Output.
Encoding
MQLONG
Numeric encoding of message data.
Input and output.
CodedCharSetId
MQLONG
Character set identifier of message data.
Input and output.
Format
MQCHAR8
Format name of message data.
Input and output.
Priority
MQLONG
Message priority.
Input and output.
Persistence
MQLONG
Message persistence.
Input and output.
MsgId
MQBYTE24
Message identifier.
Output.
CorrelId
MQBYTE24
Correlation identifier.
Output.
BackCount
MQLONG
Backout counter.
Output.
ReplyToQ
MQCHAR48
Name of reply queue.
Input and output.
ReplyToQMgr
MQCHAR48
Name of reply queue manager.
Output.
UserIdentifier
MQCHAR12
User identifier.
Output.
AccountingToken
MQBYTE32
Accounting token.
Output.
ApplIdentityData
MQCHAR32
Application data relating to identity.
Output.
PutApplType
MQLONG
Type of application that put the message.
Output.
PutApplName
MQCHAR28
Name of application that put the message.
Output.
PutDate
MQCHAR8
Date when message was put.
Output.
PutTime
MQCHAR8
Tine when message was put.
Output.
ApplOriginData
MQCHAR4
Application data relating to origin.
Output.
GroupId
MQBYTE24
Group Identifier.
Output.
MsgSeqNumber
MQLONG
Sequence number of logical message within group.
Output.
Offset
MQLONG
Offset of data in physical message form start of logical message.
Output.
MsgFlags
MQLONG
Offset of data in physical message from start of logical message.
Output.
OriginalLength
MQLONG
Length of original message.
Output.


 Transports and Interfaces: Siebel eBusiness Application Integration Volume III 
 Published: 23 June 2003