Subscribing MQ Adapter Has 4MB Message Size Limit (Doc ID 398925.1)

Last updated on JANUARY 26, 2007

Applies to:

Oracle Applications InterConnect Tool Kit - Version: 10.1.2.0.2
This problem can occur on any platform.

Symptoms

It appears the MQ series adapter has a 4MB message size limit when sending messages to an MQ Series system. When sending messages which are 4MB or larger, the adapter consistently throws the following exception, which can be seen in the adapter's log files:

 

Entering method: MQD3L_produce
<MSG_TEXT>A JMS exception was raised during send() to MQ Series
destination:</MSG_TEXT>
<SUPPL_DETAIL><![CDATA[javax.jms.JMSException: MQJMS2007: failed to
send message to MQ queue at
com.ibm.mq.jms.services.ConfigEnvironment.newException(ConfigEnvironment.java:
553)at
com.ibm.mq.jms.MQMessageProducer.sendInternal(MQMessageProducer.java:1602)
at com.ibm.mq.jms.MQMessageProducer.send(MQMessageProducer.java:1022)
at com.ibm.mq.jms.MQMessageProducer.send(MQMessageProducer.java:1056)at

oracle.oai.agent.adapter.mqseries.MQTransactionalDestination.send(MQTransactio
nalDestination.java:749)at
oracle.oai.agent.adapter.mqseries.MQMessageReceiver.messageReceived(MQMessageR
eceiver.java:196)at
oracle.oai.agent.client.SmartQueueDispatcher.run(SmartQueueDispatcher.java:324)
at java.lang.Thread.run(Thread.java:534)
]]></SUPPL_DETAIL>
...
etc.

The same message sent in the same environment, but smaller than 4MB is sent and received correctly.

Research done on the MQJMS2007 error initially implied the error was on the MQ side. But IBM confirmed that the MQ client Java API sets an internal default limit of 4MB on the message size. This default value can be overriden by the client, using the maxMessageLength attribute of the MQChannelDefinition class. The class and attribute are described in the IBM WebSphere MQ documentation, currently located at the WebSphere MQ information center home on IBM's web site.
However, this document doesn't mention the default 4MB limit. The API's description can be found at the above link under Using Java > WebSphere MQ base Java API reference > Package com.ibm.mq > MQChannelDefinition

Initially, it was assumed that Oracle's implementation of the MQ Series adapter doesn't set the maxMessageLength parameter, meaning that we are hitting the default 4MB limit.

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms