ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » General IBM MQ Support » MQRC_MSG_TOO_BIG_FOR_Q,..... but it's really not

Post new topic  Reply to topic
 MQRC_MSG_TOO_BIG_FOR_Q,..... but it's really not « View previous topic :: View next topic » 
Author Message
csmith28
PostPosted: Tue Dec 30, 2003 11:01 am    Post subject: MQRC_MSG_TOO_BIG_FOR_Q,..... but it's really not Reply with quote

Grand Master

Joined: 15 Jul 2003
Posts: 1196
Location: Arizona


MQ5.3 CSD04
AIX5.1

Scenario: MQClient putting a 10meg message on to a remote MQManager via a QAlias that points to a Qlocal.

I have altered the MAXMSGL to MAXMSGL(12582912) 12meg on the qmgr and when I defined the queue that the message is to be place on I defined the MAXMSGL as 12meg as well but we continue to get code 2030 MQRC_MSG_TOO_BIG_FOR_Q when we try to put the message there. Note that previous to this the MAXMSGL for the qmgr was set to (4194304) 4meg an we can put 4meg messages to the local queue that has been defined for this but nothing larger.

$ echo "dis qmgr" | runmqsc
5724-B41 (C) Copyright IBM Corp. 1994, 2002. ALL RIGHTS RESERVED.
Starting MQSC for queue manager .


1 : dis qmgr
AMQ8408: Display Queue Manager details.
DESCR( ) DEADQ(SYSTEM.DEAD.LETTER.QUEUE)
DEFXMITQ( ) CHADEXIT( )
CLWLEXIT( ) CLWLDATA( )
REPOS( ) REPOSNL( )
SSLKEYR(/var/mqm/qmgrs/*****/ssl/key) SSLCRLNL( )
SSLCRYP( ) COMMANDQ(SYSTEM.ADMIN.COMMAND.QUEUE)
QMNAME(*****) CRDATE(2002-07-10)
CRTIME(20.17.2 ALTDATE(2003-12-1
ALTTIME(10.08.19) QMID(TAX06_2002-07-10_20.17.2
TRIGINT(999999999) MAXHANDS(256)
MAXUMSGS(10000) AUTHOREV(DISABLED)
INHIBTEV(DISABLED) LOCALEV(DISABLED)
REMOTEEV(DISABLED) PERFMEV(DISABLED)
STRSTPEV(ENABLED) CHAD(DISABLED)
CHADEV(DISABLED) CLWLLEN(100)
MAXMSGL(12582912) CCSID(819)
MAXPRTY(9) CMDLEVEL(530)
PLATFORM(UNIX) SYNCPT
DISTL(YES)


$ echo "dis ql (**.TEST.*****.****.***.**.QL01)" | runmqsc
5724-B41 (C) Copyright IBM Corp. 1994, 2002. ALL RIGHTS RESERVED.
Starting MQSC for queue manager .


1 : dis ql (**.TEST.*****.****.***.**.QL01)
AMQ8409: Display Queue details.
DESCR()
PROCESS( ) BOQNAME( )
INITQ( ) TRIGDATA( )
CLUSTER( ) CLUSNL( )
QUEUE(**.TEST.*****.****.***.**.QL01) CRDATE(2003-12-1
CRTIME(10.22.52) ALTDATE(2003-12-19)
ALTTIME(08.18.30) GET(ENABLED)
PUT(ENABLED) DEFPRTY(0)
DEFPSIST(YES) MAXDEPTH(20)
MAXMSGL(12582912) BOTHRESH(2)
SHARE DEFSOPT(SHARED)
HARDENBO MSGDLVSQ(PRIORITY)
RETINTVL(999999999) USAGE(NORMAL)
NOTRIGGER TRIGTYPE(NONE)
TRIGDPTH(1) TRIGMPRI(0)
QDEPTHHI(80) QDEPTHLO(20)
QDPMAXEV(ENABLED) QDPHIEV(DISABLED)
QDPLOEV(DISABLED) QSVCINT(999999999)
QSVCIEV(NONE) DISTL(NO)
DEFTYPE(PREDEFINED) TYPE(QLOCAL)
SCOPE(QMGR) DEFBIND(OPEN)
IPPROCS(0) OPPROCS(0)
CURDEPTH(0)
One MQSC command read.
No commands have a syntax error.
All valid MQSC commands were processed.


Do I need to stop and restart the mqmgr so the alteration of the MAXMSGL on the qmgr itself will take affect?

I looked at the mqs.ini and the qm.ini for that mqmgr and didn't see any entries there that would be attributable to this.

Is there something else I missed?
_________________
Yes, I am an agent of Satan but my duties are largely ceremonial.
Back to top
View user's profile Send private message
Michael Dag
PostPosted: Tue Dec 30, 2003 11:15 am    Post subject: Reply with quote

Jedi Knight

Joined: 13 Jun 2002
Posts: 2607
Location: The Netherlands (Amsterdam)

You mention MQClient. Do you use the MQSERVER parameter or a Channel Table to connect... I recall a limitation of 4MEG on the MQSERVER.

Michael
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
csmith28
PostPosted: Tue Dec 30, 2003 11:24 am    Post subject: Good Question..... Reply with quote

Grand Master

Joined: 15 Jul 2003
Posts: 1196
Location: Arizona

I don't work much with the Client Side but here is the Java Code they are trying to use:
String HOST = util.getValueNamed("HOST");
String CHANNEL = util.getValueNamed("CHANNEL");
String QMGR = util.getValueNamed("QUEUEMANAGER");
Int PORT = new Integer(util.getValueNamed("PORT")).intValue();
if (PORT == 0){
PORT=1414;
}
//Set up MQ Environment
MQEnvironment.hostname = HOST;
if (CHANNEL.length() > 0)
MQEnvironment.channel = CHANNEL;
MQEnvironment.port = PORT;
MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,MQC.TRANSPORT_MQSERIES);
Try
{

public void putMessage(String putQueue, byte[] data) {
MQQueue localQ = null;
int openOptions = MQC.MQOO_OUTPUT;
try {
//Create the connection to the queue manager;
qMgr = new MQQueueManager(QMGR);
} catch(Throwable t){
System.out.println("Error connecting to Queue Manager: " + t.getMessage());
t.printStackTrace();
}

localQ = qMgr.accessQueue(putQueue, openOptions, null, null, null);
MQMessage message = new MQMessage();
message.expiry = MQC.MQEI_UNLIMITED;
message.persistence = MQC.MQPER_NOT_PERSISTENT;
message.messageId = MQC.MQMI_NONE;
message.write(data);
MQPutMessageOptions pmo = new MQPutMessageOptions();
localQ.put(message, pmo); // Exception thrown here with code 2030
} catch (MQException mqe) {
mqe.printStackTrace();
} finally {
try {
if(localQ != null) {
qMgr.commit();
localQ.close();
}
}
catch(Exception ex) {}
}
}

This is all greek to me...... or should I say Java to me.
_________________
Yes, I am an agent of Satan but my duties are largely ceremonial.


Last edited by csmith28 on Tue Dec 30, 2003 12:55 pm; edited 1 time in total
Back to top
View user's profile Send private message
jefflowrey
PostPosted: Tue Dec 30, 2003 11:25 am    Post subject: Re: MQRC_MSG_TOO_BIG_FOR_Q,..... but it's really not Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

csmith28 wrote:

Scenario: MQClient putting a 10meg message on to a remote MQManager via a QAlias that points to a Qlocal.

Do you know the mechanism that a client uses to connect to a Queue Manager? Do you know how the client functions?

The answers to those questions may have an impact on your problem.

csmith28 wrote:
Do I need to stop and restart the mqmgr so the alteration of the MAXMSGL on the qmgr itself will take affect?

I don't believe so. It appears this is automatic.

Quote:
Is there something else I missed?
Yes. The fact that you're connecting from a client, over a channel.
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
csmith28
PostPosted: Tue Dec 30, 2003 12:58 pm    Post subject: See mechanism above,...... Reply with quote

Grand Master

Joined: 15 Jul 2003
Posts: 1196
Location: Arizona

note I just tried changing the MAXMSGL of the SYSTEM.DEF.SVRCONN to 12 meg too and it still failed.

Like I said, I have very little experience working on the Client Side.
_________________
Yes, I am an agent of Satan but my duties are largely ceremonial.
Back to top
View user's profile Send private message
EddieA
PostPosted: Tue Dec 30, 2003 1:13 pm    Post subject: Reply with quote

Jedi

Joined: 28 Jun 2001
Posts: 2453
Location: Los Angeles

I don't know for sure, but I'm guessing that the Java client connection has the same restriction as connecting using the MQSERVER method. The channel is limited to 4Meg.

Cheers,
_________________
Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0
Back to top
View user's profile Send private message
Prahasith
PostPosted: Tue Dec 30, 2003 2:12 pm    Post subject: Reply with quote

Disciple

Joined: 16 May 2003
Posts: 184
Location: Kansas City

If MQSERVER environment variable is used to define a client channel a maximum message length (MAXMSGL) of 4 MB is used, so larger messages cannot flow across this channel. For larger messages a client-connection channel must be defined using DEFINE CHANNEL, on the server, with MAXMSGL set to a larger figure.

1. Change MAXMSGL parameter of Queue Manger to bigger than 4MB.
2. Change MAXMSGL parameter of Queue to bigger than 4MB.
3. If you use MQ Client environment, you must change MAXMSGL parameter of Channel
Back to top
View user's profile Send private message Send e-mail
EddieA
PostPosted: Tue Dec 30, 2003 5:25 pm    Post subject: Reply with quote

Jedi

Joined: 28 Jun 2001
Posts: 2453
Location: Los Angeles

The sample provided was written in Java. Neither of those methods of specifing the client connection are used.

Cheers,
_________________
Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0
Back to top
View user's profile Send private message
csmith28
PostPosted: Wed Dec 31, 2003 8:39 am    Post subject: Reply with quote

Grand Master

Joined: 15 Jul 2003
Posts: 1196
Location: Arizona

I'm not sure if it will help but I have increased the MAXMSGL for the SYSTEM.DEF.CLNTCONN and SYSTEM.DEF.SVRCONN to 12 meg.
_________________
Yes, I am an agent of Satan but my duties are largely ceremonial.
Back to top
View user's profile Send private message
PeterPotkay
PostPosted: Wed Dec 31, 2003 2:47 pm    Post subject: Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7722

MQSERVER does not come into play for this application. It is coding its own connection info by building the MQEnvironment class.

Code:

String CHANNEL = util.getValueNamed("CHANNEL");


This is what the Java client is asking for as far as the channel is concerned. This channel (a SVRCONN channel on the Queue Manager) needs to have its MAXMSGLENGTH altered. Any other channels have no effect on this problem.

What is the max message length for "CHANNEL"?
_________________
Peter Potkay
Keep Calm and MQ On
Back to top
View user's profile Send private message
csmith28
PostPosted: Mon Jan 05, 2004 2:32 pm    Post subject: Reply with quote

Grand Master

Joined: 15 Jul 2003
Posts: 1196
Location: Arizona

PeterPotkay wrote:
MQSERVER does not come into play for this application. It is coding its own connection info by building the MQEnvironment class.

Code:

String CHANNEL = util.getValueNamed("CHANNEL");


This is what the Java client is asking for as far as the channel is concerned. This channel (a SVRCONN channel on the Queue Manager) needs to have its MAXMSGLENGTH altered. Any other channels have no effect on this problem.

What is the max message length for "CHANNEL"?


Indeed. I eventually came to the same conclution but the Java programer on the other side of this is clueless. The ball is in their court.

Thanks for all the help.
_________________
Yes, I am an agent of Satan but my duties are largely ceremonial.
Back to top
View user's profile Send private message
csmith28
PostPosted: Wed Jan 07, 2004 4:09 pm    Post subject: Success Reply with quote

Grand Master

Joined: 15 Jul 2003
Posts: 1196
Location: Arizona



I found out late last week that the Developer was using his own W2k Desktop instead of my AIX Client Server. Looking at his java code I began to get bothered by the values he was entering as in:
String HOST = util.getValueNamed("HOST");
String CHANNEL = util.getValueNamed("CHANNEL");
String QMGR = util.getValueNamed("QUEUEMANAGER");
Int PORT = new Integer(util.getValueNamed("PORT")).intValue();
if (PORT == 0){
PORT=1414;

So instead I had him enter:
String HOST = util.getValueNamed("the DNS Name of the Server");
String CHANNEL = util.getValueNamed("SYSTEM.DEF.SVRCONN");
String QMGR = util.getValueNamed("The actual name of the MQManger");
Int PORT = new Integer(util.getValueNamed("PORT")).intValue();
if (PORT == 0){
PORT=1414;

Remember, earlier I changed the MAXMSGL on my SYSTEM.DEF.SVRCONN channel to 12meg.

It worked. I am guessing that the client while using String CHANNEL=CHANNEL default values because it wasn't being told specifically which channel it should use on the Client side even though the default is the SYSTEM.DEF.SVRCONN. So the client assumed it would be using a SYSTEM.DEF.SVRCONN with the default MAXMSGL of 4 meg.

One other change that I made was I changed the MAXMSGL on the SYSTEM.DEAD.LETTER.QUEUE to 12 meg as well.

Welp thanks for all the help. You guys did help me think this through.
_________________
Yes, I am an agent of Satan but my duties are largely ceremonial.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » General IBM MQ Support » MQRC_MSG_TOO_BIG_FOR_Q,..... but it's really not
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.