Author |
Message
|
PeterPotkay |
Posted: Wed Nov 12, 2003 12:08 pm Post subject: VB.NET clients limited to 4 MEG? |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
I have a client at 5.3 CSD04 with the .NET support pack (Next we week we will upgrade him to CSD05 and the supported classes).
Anyway, it seems we can't get a message larger then 4 MEG thru.
The QM, the SVRCONN channel and the queue are all at 104857600 for Max Message Length.
It keeps throwing a 2010 Error (MQRC_DATA_LENGTH_ERROR). From the Error manual, this means:
Quote: |
The DataLength parameter is not valid. Either the parameter pointer is not valid, or it points
to read-only storage. (It is not always possible to detect parameter pointers that are not valid;
if not detected, unpredictable results occur.)
This reason can also be returned to an MQ client program on the MQGET, MQPUT, or
MQPUT1 call, if the BufferLength parameter exceeds the maximum message size that was
negotiated for the client channel.
Corrective action: Correct the parameter.
If the error occurs for a WebSphere MQ client program, also check that the maximum message
size for the channel is big enough to accommodate the message being sent; if it is not big
enough, increase the maximum message size for the channel.
|
The app returns some info that shows the MaxMessageLength is 4194304. Since this info in the display is between the IPROCS count and the current depth, we assume it means the queue.
So, I made the MAX on the queue 12345, and the SVRCONN channel 3000000. Now the app returns that the max is 12345.
Next, I made the MAX on the queue 4000000, and the SVRCONN channel was left at 3000000. Now the app returns that the max is 3000000!
Finally I made both the queue and the SVRCONN channel 5000000, and the app retuned the MAX as 4194304.
MQSERVER variable is not set. The app is building the MQEnvironment class.
Why the artificial limit at 4 MEG? _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
jefflowrey |
Posted: Wed Nov 12, 2003 12:16 pm Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Try changing the max size on SYSTEM.DEF.CLNTCONN? _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
PeterPotkay |
Posted: Wed Nov 12, 2003 12:24 pm Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
I don't think this channel is even used for this scenario. It is only there for creating Client Channel Tables. _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
PeterPotkay |
Posted: Wed Nov 12, 2003 12:45 pm Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
Jeff, I did trying upping the CLNTCONN channel for Ha-Has , but still the same problem . _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
jefflowrey |
Posted: Wed Nov 12, 2003 12:59 pm Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Well, it was the only thought I had. I didn't think it would work either.  _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
JasonE |
Posted: Thu Nov 13, 2003 3:17 am Post subject: |
|
|
Grand Master
Joined: 03 Nov 2003 Posts: 1220 Location: Hursley
|
I think the r/c you mention is specific to either the negotiated channels maxmessagelength OR the parm passed in to receive the datelength is unwritable. (The maxmsg size on the qmgr probably impacts the maxmsg size on the svrconn though - The queue one shouldnt make a difference as I think you would get a 2030 or 2031 error there)
If you are not using MQSERVER, how are you setting up a channel definition - Using the MQEnvironment I think the channel gets built with a hardcoded maxMsgLength = 4194304, so I am not sure there is a way to override that.
I suspect you need to contact service.... Officially...  |
|
Back to top |
|
 |
PeterPotkay |
Posted: Thu Nov 13, 2003 9:34 am Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
I upgraded the developer to CSD05, but still no luck.
I looked in the Java MQ manual and found a class called MQChannelDefinition. This class has a variable called maxMessageLength.
Quote: |
maxMessageLength
public int maxMessageLength
The maximum length of message that can be sent to the queue manager.
|
I assume this is a variable that can be set in Java.
So, since the .NET classes are very similar to the Java classes, I looked in the .NET manual for it. The only mention of this class is on the first page of Chapter 4 of the .NET manual. It only says the class is available, but gives no mention of its supported variables.
But the class is just not there when you try and access it in the code.
I have opened up a ticket with IBM. _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
JasonE |
Posted: Thu Nov 13, 2003 9:44 am Post subject: |
|
|
Grand Master
Joined: 03 Nov 2003 Posts: 1220 Location: Hursley
|
That class is an "internal sealed class". You get one instantiated for you based off the hashtable or mqenvironment passed in on the qmgr connect, and as it stands you have no way of influencing this.
Not quite tree - I think you can set mqchllib and mqchltab, have a client conn defn with a large maxmsg, set NMQ_MQ_LIB=mqic32.dll, and connect as though connecting to a server (rather than the client connect types) - Might work |
|
Back to top |
|
 |
PeterPotkay |
Posted: Thu Nov 13, 2003 10:06 am Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
Since upgrading to CSD05, the application now just flat out does not work. The below error is thrown when attemting to connect to the QM:
Quote: |
'DefaultDomain': Loaded 'c:\windows\microsoft.net\framework\v1.0.3705\mscorlib.dll', No symbols loaded.
'mqtest': Loaded 'D:\Development\mqtest\mqtest\bin\mqtest.exe', Symbols loaded.
'mqtest.exe': Loaded 'c:\windows\assembly\gac\system\1.0.3300.0__b77a5c561934e089\system.dll', No symbols loaded.
'mqtest.exe': Loaded 'c:\windows\assembly\gac\microsoft.visualbasic\7.0.3300.0__b03f5f7f11d50a3a\microsoft.visualbasic.dll', No symbols loaded.
'mqtest.exe': Loaded 'c:\windows\assembly\gac\amqmdnet\1.0.0.3__dd3cb1c9aae9ec97\amqmdnet.dll', No symbols loaded.
An unhandled exception of type 'System.IO.FileNotFoundException' occurred in amqmdnet.dll
Additional information: File or assembly name System.EnterpriseServices, or one of its dependencies, was not found.
|
_________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
JasonE |
Posted: Fri Nov 14, 2003 3:04 am Post subject: |
|
|
Grand Master
Joined: 03 Nov 2003 Posts: 1220 Location: Hursley
|
Did you register the new amqmdnet.dll in the GAC as per the memo.ptf (or use a config xml file)? The fixpack install doesnt do it automatically.
PS I've updated your IBM problem record with a description of what the problem is - I believe I know what the problem and solution is, so you should hear back at some point. |
|
Back to top |
|
 |
PeterPotkay |
Posted: Fri Nov 14, 2003 5:24 am Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
Yes, the developer followed these instructions:
Quote: |
Installation
------------
Applications build against the 'WebSphere MQ Classes for .NET'
assembly (amqmdnet.dll) will cause the CLR to throw a
'FileNotFoundException'. This is because the CLR can't find the
assembly in the application.
To allow the CLR to find the assembly either:
Share the assembly by installing it in the 'global assembly cache'
(GAC).
The 'WebSphere MQ Classes for .NET' assembly is installed in the
GAC by executing the following command:
gacutil /i amqmdnet.dll
This will all applications to find the assembly.
Alternatively a config file can be created to tell the CLR where to
find the 'WebSphere MQ Classes for .NET' assembly.
Example config file for nmqsget.exe (config file name is
application.exe.config - ie nmqsget.exe.config)
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="amqmdnet" publicKeyToken="dd3cb1c9aae9ec97" culture="neutral" />
<codeBase version="1.0.0.3" href="file://c:\mqm\bin\amqmdnet.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
|
Jason, you know what the problem is regarding the 4 MEG limit, or why the app gets an excpetion on file not found? _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
PeterPotkay |
Posted: Fri Nov 14, 2003 5:37 am Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
I will see if the developer will run the trace on the effected machine. At this point they want to uninstall MQClient 5.3 CSD05, clear out all the directories, reinstall MQClient from the MACV support pac (5.3 CSD04) and go back to using the .NET Support Pack. They cannot afford to be out of the water any longer. This is in hopes of solving the File Not Found Exception.
Before this though, the developer will upgrade his Framework to 1.1 from 1.0 in hopes of solving the file not found issues. He says he can't even access any of the classes in the code right now.
The outstanding problem of the 4 MEG limit is also a big concern.
Their confidence has been shaken in the stability of MQ with .NET. _________________ Peter Potkay
Keep Calm and MQ On
Last edited by PeterPotkay on Fri Nov 14, 2003 7:36 am; edited 1 time in total |
|
Back to top |
|
 |
JasonE |
Posted: Fri Nov 14, 2003 6:23 am Post subject: |
|
|
Grand Master
Joined: 03 Nov 2003 Posts: 1220 Location: Hursley
|
The 4Mb limit - simple internal change required to mirror the way Java handles it (default to max 100Mb msgs)
The file not found exception - As well as registering the dll with gacutil, you need to ensure your app is recompiled against the csd05 version. The exception you see is definitely due to a failure to locate the right version.
Try using the config file as listed in the memo.ptf, can you get it working this way (and you have rebuilt it, pointing at the right .dll file?). |
|
Back to top |
|
 |
PeterPotkay |
Posted: Fri Nov 14, 2003 8:02 am Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
Jason,
We tried running this under VB2003 with the 1.1 framework, and the sample worked, as well as the application. (Still no messages > 4 MEG though)
Previously we were at VB2002; framework 1.0.
Is this a requirement for the .NET classes in CSD05?
I assume you are working on a fix for the size restriction. Any idea when it might be available? _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
JasonE |
Posted: Fri Nov 14, 2003 9:06 am Post subject: |
|
|
Grand Master
Joined: 03 Nov 2003 Posts: 1220 Location: Hursley
|
I cant answer the prereqs, as I dont know (I've only tried with v1.1.4322 framework, no idea on the VB* bits) - I'm not the developer, I just 'fix things'
As to the fix, I cant commit anything but its a trivial change to make so I would not expect a long delay |
|
Back to top |
|
 |
|