The blog provides the commonly asked Oracle SOA AQ Adapter / MQ Adapter Interview questions & answers to be helpful for beginners and experienced professionals.
1) For what purpose AQ Adapter is being used in SOA Services ?
Oracle Advanced Queue (AQ) is an Oracle Database feature provides scalable, reliable and flexible approach for bidirectional asynchronous message exchange among different applications.
2) Does AQ Adapter supports integration with Mediator ?
Yes, AQ Adapter can be integrated with mediator to process message to single or multiple queues.
3) Describe the Binding properties for Oracle AQ Adapter ?
The below given are the Oracle AQ Adapter binding properties
|AQ Adapter Binding Property||AQ Adapter Binding Property Description|
|ConnectionRetryDelay||indicates the waiting time for Oracle AQ Adapter to retry the connection after a connection is lost. default value is 15 sec|
|DequeueTimeOut||indicates the waiting time after which the dequeue() API times out if no message is received on the inbound queue. The default value is 1sec|
|adapter.aq.dequeue.threads||indicates the total poller threads that are created when an endpoint is activated. The default value is 1.|
4) Which property can be used to process AQ/ MQ messages through single node in the Clustered Environment ?
We need to add singleton property in the composite.xml as given below:
<property name="singleton" type="xs:boolean" many="false" override="may">true</property>
5) Which property allows AQ Adapter messages to be processed sequentially through single node in the Clustered Environment ?
- Enable singleton property for AQ adapter in cluster environment
- Set activtionInstances=1
6) Which property also AQ Adapter to consume the single message by multiple AQ consumers?
The Oracle AQ Adapter enqueue header property (jca.aq.RecipientList) enables to override the recipient list (AQ subscriber separated by commas)to retrieve messages from a queue. Each consumers (AQ subscriber) must have unique values for the Recipient parameter
7) Describe the few JCA properties for Oracle AQ Adapter ?
The below given are the Oracle AQ Adapter JCA properties
|AQ Adapter JCA Property||AQ Adapter JCA Property Description|
|QueueName||indicates the AQ Queue Name|
|DatabaseSchema||indicates the Database Schema where AQ Queue resides|
|SchemaValidation||When set to true, payload is validated against the schema|
|RecipientList||allows to provide multiple consumers with comma separated for dequeuing the message|
|Consumer||consumers to dequeue the message and applicable to multiple consumer queues|
|DequeueCondition||Can be used for Dequeue Operations. It allows to provide Boolean Expression or PL/SQL or SQL Function to add the Dequeue Condition for retrieving messages that matches the condition.|
|PayloadHeaderRequired||enables when ObjectFieldName value is set to ‘true’ and allows non payload attributes of ADT to be processed as Normalized messages.|
|MessageSelectorRule||In case of dequeueing the message from multiple consumer queue, specific conditions need to be applied to accept the message meeting the criteria. These condition can be applied using MessageSelectorRule.|
|Correlation||dequeues the message based on the Correlation Id|
|PayloadSizeThreshold||indicates the payload size threshold limit|
8) What are the supported ADT Types in AQ Adapter ?
The below given types are supported for ADT in AQ Adapter
9) What are the supported Payload Types in AQ Adapter ?
The below given types are supported for Payload in AQ Adapter
10) Which property allows support for multiple threads in AQ Adapter ?
Set the value for adapter.aq.dequeue.threads property to increase the total poller threads that are created when an endpoint is activated. Default value is 1.
11) Which property determines the waiting time for the Dequeue Polling threads?
Set the DequeueTimeOut property in the composite.xml to with the time Dequeue() API waits before starting the dequque polling threads.
<property name="DequeueTimeOut" type="xs:integer" many="false"override="may">10
12) Does AQ Adapter supports stream payload and how it can be achieved ?
Yes, the Oracle AQ Adapter provides support for streaming the payload and allows to stream to database instead of using SOA run time in memory as DOM. The below property need to be added in the .jca file
<property name="QueueName" value="TEST_AQ_INBND_Q"/>
<property name="DatabaseSchema" value="AQTESTSCHEMA"/>
<property name="EnableStreaming" value="true"/>
13) For what purpose MQ Adapter is being used in SOA Services ?
Message queuing is the communication method where independent applications communicate through message data on a distributed system. The message is sent to the queue by the application, owned by a queue manager and other applications can retrieve the message from the queue.
Messaging: In synchronous commination, message sent by one application is retrieved by another application. The sender application waits for the reply to ensure message is read by another application.
Message: Message is a structured data agreed by the application for send/receive communication.
Message Queue: Message queue is an object that stores the message.
Queue Manager: A queue manager provides the messaging services to the applications using application programming interface.
Message Channel: provides the communication path between 2 queue managers.
Transmission Queue: used to temporary store message that are destined for remote queue manager.
Message Segment: Large messages are divided into small messages called message segment.
Message Group: indicates the set of related messages with the same Group Id.
14) What is the message structure of the MQ Series message ?
The MQ Series message includes the below details
- Message Header: includes the header details for the message like Message Id, Message Type, Message Priority, routing information
- Optional Header: includes additional details as part of message header
- Application Data: Message in the form of structured data to be processed.
15) Which property is required to process group messages using MQ Adapter ?
Group Messages indicates the set of related messages with the same Group Id. MQ Series Adapter enabled with Group messages cannot process non-group messages in the queue and thus will not be picked for processing.
The below property can be added in the composite.xml for enabling group messages
<property name ="ProcessGroupMessages" value ="true"/>
16) Which property we need to use to control number of message processed from MQ at one time?
Oracle MQ Series Adapter provides the parameter to control the number of threads that dequeue the messages from the inbound queue.
Set the Value for InboundThreadCount =’N’ in the .jca file where N is the Number of threads to be considered
17) Describe advantages of MQ Series Adapter over JMS Adapter ?
The MQ Series Adapter provides the below advantages:
- The Oracle MQ Series Adapter supports Positive Action Notification (PAN) and Negative Action Notification (NAN)
- The Oracle MQ Series Adapter supports report messages like message delivery, message arrival, exception report, message expiry report.
- The Oracle MQ Series Adapter supports sending unwanted or corrupted messages to a dead-letter queue
- The Oracle MQ Series Adapter provides advanced filter options, such as filtering message belonging to a group
- The Oracle MQ Series Adapter is faster and easier to use
18) What are the operations supported by MQ Adapter when used with BPEL /Mediator ?
The below given operations are supported:
- Enqueue message
- Dequeue message
- Request -Response
- Outbound Queue
19) Does MQ Adapter support message communication using SSL Protocol ?
Yes, MQ Adapter supports SSL communication and below given properties must be set
- SSL Enable
20) Does MQ Adapter supports XA Transactions ?
Yes, MQ Adapter supports both Inbound and Outbound XA Transactions. The below steps need to be performed in the Weblogic Application Server to enable XA Transactions
- Click Domain Structure -> Deployments
- Click MQ Series Adapter -> configuration -> Outbound Connection Pools
- Select javax.resource.cci.ConnectionFactory for eis/MQ/MQAdapter
- Select XA Transaction and set value as true
Enable the below property in the composite.xml for Inbound XA Transactions
21) Does MQ Adapter support retry mechanism and how it can be achieved ?
The Retry mechanism is supported by MQ Adapter can be achieved using below given approach
- JCA Inbound Retry Mechanism: The JCA Retry mechanism is supported by other adapters and supports retry for connection failure. With MQ Adapter, it also supports retry to put the message into a queue.
- Message Backout Queue: is used for storing the rejected messages from the Inbound message queue for retry. The maximum messages can be placed as per the MaximumBackoutCount property value which defines the count for rejected messages in the back out queue.
22) What are the properties required to enable Backout Queue in the Inbound MQ Adapter Service ?
The below properties need to be added in the .jca file for Inbound MQ Adapter
<property name="BackoutQueueName" value="BACKOUT.QUEUE"/>
<property name="MaximumBackoutCount" value="5"/>
<property name="BackoutRetries" value="3"/>
23) Does MQ Adapter supports reading message as attachment ?
Yes, MQ Adapter supports reading messages as attachment.
24) How partial delivery is supported by MQ Adapter ?
The partial delivery in MQ Adapter is applicable when a single message is to be transmitted to multiple queues.
When partial delivery is set to true, then even if the message is failed for some queues, it will still put the message in the remaining queues.
When partial delivery is set to false, if message delivery fails for even a single queue, the message processing is stopped for other queues also.
25) What are the types of reports supported by MQ Adapter ?
The below given reports can be retrieved as message processing
- Confirmation on Arrival
- Confirmation on Delivery
- Exception Report
- Expiry Report
- Positive Action Notification (PAN)
- Negative Action Notification (PAN)
26) Describe the header properties that can be used to filter the dequeue message in MQ Adapter ?
The below given header properties can be used to filter the dequeued message based on Message Id and Correlation Id
- jca.mq.MQMD.MsgId: indicates the message filter option based on the Message Id (hexadecimal-encoded value)
- jca.mq.MQMD.CorrelId: indicates the message filter option based on the Correlation Id (hexadecimal-encoded value)
27) What message types are supported by MQ Adapter ?
The below given are the MQ Adapter supported message types:
- Normal Message : indicates the message without no response required
- Request Message: indicates the message without response required
- Reply Message: message sent by a program in response to a request message
- Report Message: message indicating the confirmation of message received or message failure details
28) what actions can be taken on the message delivery failure for MQ Adapter ?
The message delivery failure can be handled in the below given ways:
- Place message on a dead letter queue: storing the rejected / failed message to a backout / dead letter queue for retry
- Discard message
29) Which property is required to enable large payloads for the Inbound MQ Adapter ?
Select the option – Use Large Message Support while configuring inbound MQ Adapter for large payloads
30) Which property is required to enable large payloads for the Outbound MQ Adapter ?
The below given configurations options can be provided to support laerge payloads for outbound MQ Adapter
- SegmentIfRequired: If the property SegmentIfRequired set to true, then Allow message to segmented when necessary and becomes useful for large payloads processing
- MaximumSegmentLength : allows to provided the maximum length to be provided for each segment . Be default, set to ‘Maximum Allowed’
31) Which property manages the Oracle AQ Adapter Inbound retries ?
The jca.retry.count property can be specified with the Number of retries .
When jca.retry.count property is enabld, ensure the max_retries value is updated properly in the queue.