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 » Put is successful Get fails with 2009 error code.

Post new topic  Reply to topic Goto page 1, 2  Next
 Put is successful Get fails with 2009 error code. « View previous topic :: View next topic » 
Author Message
patkatm
PostPosted: Tue Jan 20, 2009 6:54 am    Post subject: Put is successful Get fails with 2009 error code. Reply with quote

Newbie

Joined: 09 Jan 2009
Posts: 7

Hi, everybody. I have peculiar problem. I was able to Connect, Send & recevie the reply from the Q Server. Suddenly I m unable to Get message failure and 2009 error code occurs. If use wiresharke monitoring tool it records the trace between my client and server application I receive TCP re-transmission error. Possible Checksum error etc.

I need to fix this problem please help me. Below copied is the code written in C# executed from Win XP and connecting remotely to a Q Manager which is in different platform.


//*****************************************************//
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using IBM.WMQ;

namespace MQClient
{
public class MQClass
{
private MQQueueManager mqQMgr; // MQQueueManager instance
private String queueManger; // Name of queueManager to use
private String GetQName; // Name of Get queue to use
private String SndQName; // Name of Send queue to use

MQQueue mqSndQueue; // MQQueue Send instance
MQQueue mqGetQueue; // MQQueue Get instance

cLogger objLogger; //Trace Logging.
string cClassName;

byte[] PutMsgCorrId; //Store the Correlation ID

private String channelName;
private String connectionName;


public MQClass(string sChannelName)
{
channelName = "SVSV.SVRCONN";
connectionName = "192.100.1.116";
SndQName = "LINKA.REQUEST";
GetQName = "LINKA.REPLY";
queueManger = "SVSVQM";
objLogger = new cLogger();
cClassName = "MQClass";

objLogger.write2Log(cClassName, "Constructor", "*********** APPLICATION START ***********", logTraceLevel.USER);
}

~MQClass()
{
objLogger.write2Log(cClassName, "Destructor", "*********** APPLICATION ENDS ***********", logTraceLevel.USER);
}

/// <summary>
/// Connect to MQ Server.
/// </summary>
/// <param name="sChannelName">Name of the Channel.</param>
/// <param name="sMachineIP">The Server machine's IP.</param>
/// <param name="sQMgrName">Name of the Q Manager.</param>
/// <param name="sQName">Name of the Q.</param>
/// <returns>True or false</returns>
public bool Connect2MQSrvr(string sChannelName, string sMachineIP, string sQMgrName, string sSndQName, string sGetQName)
{
string cMethodName = "Connect2MQSrvr";

bool bResult = true;

objLogger.write2Log(cClassName, cMethodName, "Entered...", logTraceLevel.DEVP);

///
/// Try to create an MQQueueManager instance
///
try
{
//Channel Name
if (sChannelName.Length > 0)
channelName = sChannelName;

//Queue Manager Server IP
if (sMachineIP.Length > 0)
connectionName = sMachineIP;

//Queue Manager name
if (sQMgrName.Length > 0)
queueManger = sQMgrName;

//Send Queue name
if (sSndQName.Length > 0)
SndQName = sSndQName;

//Get Queue name
if (sGetQName.Length > 0)
GetQName = sGetQName;

MQEnvironment.Channel = channelName;
MQEnvironment.Hostname = connectionName;
MQEnvironment.Port = 1414;

Hashtable connectionProperties = new Hashtable();

// Set up the rest of the connection properties, based on the connection type requested
connectionProperties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_CLIENT);
connectionProperties.Add(MQC.CCSID_PROPERTY, MQC.CODESET_819);

MQEnvironment.properties = connectionProperties;

objLogger.write2Log(cClassName, cMethodName, channelName + ", " + connectionName + ", 1414.", logTraceLevel.DEVP);

//Open the Queue Manager
mqQMgr = new MQQueueManager(queueManger);

if (mqQMgr == null || !mqQMgr.IsConnected)
{
objLogger.write2Log(cClassName, cMethodName, "Cannot Connect.", logTraceLevel.DEVP);
bResult = false;
}
else
{
objLogger.write2Log(cClassName, cMethodName, "MQ Client connected to the Manager.", logTraceLevel.USER);

///
/// Try to open the queue
///
try
{
// Open / Access the Send Queue

// The named queue may be a model queue, which will result in the
// creation of a temporary dynamic queue, which will be destroyed as
// soon as it is closed. Therefore we must ensure that such a queue
// is not automatically closed and re-opened. We do this by setting
// open options which will avoid the need for closure and re-opening.

mqSndQueue = mqQMgr.AccessQueue(SndQName, MQC.MQOO_FAIL_IF_QUIESCING + MQC.MQOO_OUTPUT, queueManger, "", "");

if (mqSndQueue == null || !mqSndQueue.IsOpen)
{
objLogger.write2Log(cClassName, cMethodName, "Cannot Access Send Queue.", logTraceLevel.DEVP);
bResult = false;
}
else
{
objLogger.write2Log(cClassName, cMethodName, "Accessed Send Queue.", logTraceLevel.DEVP);

////Open / Access the Reply Queue
mqGetQueue = mqQMgr.AccessQueue(GetQName, MQC.MQOO_INPUT_AS_Q_DEF + MQC.MQOO_BROWSE, queueManger, "", "");

if (mqGetQueue == null || !mqGetQueue.IsOpen)
{
objLogger.write2Log(cClassName, cMethodName, "Cannot Access Get Queue.", logTraceLevel.DEVP);
bResult = false;
}
else
objLogger.write2Log(cClassName, cMethodName, "Accessed Get Queue.", logTraceLevel.DEVP);

} //If Open / Access of Send Queue is success
}
catch (MQException mqe)
{
// stop if failed
objLogger.write2Log(cClassName, cMethodName,"Ended with an Error: " + mqe.Message + ", Completion Code: " +
mqe.CompletionCode + ", Reason Code: " + mqe.ReasonCode, logTraceLevel.USER);
bResult = false;
}
} //If QMgr is opened
}
catch (MQException mqe)
{
// stop if failed
objLogger.write2Log(cClassName, cMethodName, "Ended with an Error: " + mqe.Message + ", Completion Code: " +
mqe.CompletionCode + ", Reason Code: " + mqe.ReasonCode, logTraceLevel.USER);
bResult = false;
}

if(!bResult)
DCFrmMQSrvr();

objLogger.write2Log(cClassName, cMethodName, "Exited.... Result:: " + bResult.ToString(), logTraceLevel.USER);
return bResult;
}

/// <summary>
/// Send data to MQ server.
/// </summary>
/// <param name="sData">Data to be placed in the Q.</param>
/// <returns>True or false</returns>
public bool Send2MQServer(string sData)
{
string cMethodName = "Send2MQServer";
String strMessage = "Hello World";
bool bResult = true;
MQMessage mqSndMsg; // MQMessage Send instance
MQPutMessageOptions mqPutMsgOpts; // MQPutMessageOptions instance

mqSndMsg = new MQMessage();

objLogger.write2Log(cClassName, cMethodName, "Entered....", logTraceLevel.USER);

if (mqSndQueue == null || !mqSndQueue.IsOpen || sData.Length < 1 || mqSndMsg == null)
{
objLogger.write2Log(cClassName, cMethodName, "mqSndQueue is not open or no message to transmit or SndMsg not created.",
logTraceLevel.USER);
bResult = false;
}
else
{
///
/// Prepare a message containing the passed data
///

strMessage = sData;

mqSndMsg.ReplyToQueueName = GetQName;
mqSndMsg.ReplyToQueueManagerName = queueManger;
mqSndMsg.CharacterSet = 819;
mqSndMsg.Format = MQC.MQFMT_STRING;
mqSndMsg.MessageType = MQC.MQMT_REQUEST;

//Record the Message sending time
mqSndMsg.PutDateTime = DateTime.Now;

objLogger.write2Log(cClassName, cMethodName, "Put Message Timestamp: " + mqSndMsg.PutDateTime.ToString("yyyyMMdd-HH:MM:ss:mm"),
logTraceLevel.USER);

mqPutMsgOpts = new MQPutMessageOptions();

mqSndMsg.Write(StrToByteArray(strMessage), 0, strMessage.Length);
objLogger.write2Log(cClassName, cMethodName, "Put Msg:: " + strMessage, logTraceLevel.USER);

///
/// Place the message on the queue, using default put message options.
///
try
{
mqSndQueue.Put(mqSndMsg, mqPutMsgOpts);
}
catch (MQException mqe)
{
// report the error
objLogger.write2Log(cClassName, cMethodName, "PutMsg Error: " + mqe.Message + ", Completion Code: " + mqe.CompletionCode +
", Reason: " + mqe.ReasonCode, logTraceLevel.USER);
bResult = false;
}
}

if (!bResult)
DCFrmMQSrvr();

objLogger.write2Log(cClassName, cMethodName, "Exiting...", logTraceLevel.DEVP);

return bResult;
}

/// <summary>
/// Get data From MQ server.
/// </summary>
/// <param name="sData">Data read from the Q.</param>
/// <returns>True / False</returns>
public string GetFrmMQServer()
{
string cMethodName = "GetFrmMQServer";
MQMessage mqGetMsg;

MQGetMessageOptions mqGetMsgOpts;
string sData = "";
byte[] bData;
bool bErrFlg = false;

///
/// Try to open the queue
///
try
{
objLogger.write2Log(cClassName, cMethodName, "Entered...", logTraceLevel.DEVP);

//int iOpenOptions = MQC.MQOO_INPUT_AS_Q_DEF + MQC.MQOO_BROWSE;

mqGetMsg.CharacterSet = 437; //Default value is CharacterSet 819 (iso-8859-1/latin/ibm819), 437 - ibm437 / PC Original.
mqGetMsg.Format = MQC.MQFMT_STRING;

mqGetMsgOpts = new MQGetMessageOptions(); // MQGetMessageOptions instance

//Message type - REQUEST type (instructed by Amadeus)
mqGetMsg.MessageType = MQC.MQMT_REQUEST;

mqGetMsgOpts.Version = MQC.MQGMO_VERSION_1;

//Maximum time to wait (milliseconds) for the reply message
//mqGetMsgOpts.WaitInterval = 1000*40;

bool bContinue = true;

//while (bContinue)
//{
bErrFlg = false;
bContinue = true;

try
{
mqGetQueue.Get(mqGetMsg, mqGetMsgOpts);

objLogger.write2Log(cClassName, cMethodName, "CorrelationID:: " + ByteArrayToStr(mqGetMsg.CorrelationId) + " == " +
ByteArrayToStr(PutMsgCorrId), logTraceLevel.DEVP);

if (mqGetMsg.MessageLength != 0)// && mqGetMsg.CorrelationId == PutMsgCorrId)
{
// Show the text of the received message.
objLogger.write2Log(cClassName, cMethodName, "Message of length " + mqGetMsg.MessageLength.ToString() +
" bytes received.", logTraceLevel.DEVP);

bData = mqGetMsg.ReadBytes(mqGetMsg.MessageLength);

objLogger.write2Log(cClassName, cMethodName, "Data received:: " + bData.ToString(), logTraceLevel.DEVP);
sData = ByteArrayToStr(bData);
bContinue = false;
bErrFlg = false;
}
//else
// mqGetMsgOpts.Options = MQC.MQGMO_BROWSE_NEXT;
}
catch (MQException mqe)
{
bContinue = false;

// report reason, if any
if (mqe.Reason == MQC.MQRC_NO_MSG_AVAILABLE)
{
// special report for normal end
objLogger.write2Log(cClassName, cMethodName, "No more messages retrieve.", logTraceLevel.USER);
}
// general report for other reasons
objLogger.write2Log(cClassName, cMethodName, "Ended with Error:: " + mqe.Message + ", Completion Code: " +
mqe.CompletionCode + ", Reason code: " + mqe.ReasonCode, logTraceLevel.USER);
sData = "";
} //End of Catch block
//} //End of While loop
} //End of Else-If GetQ is not open / accessible.

//if (mqGetQueue.OpenStatus)
// mqGetQueue.Close();
}
catch (MQException mqe)
{
// report the error
objLogger.write2Log(cClassName, cMethodName, "Ended with Error:: " + mqe.Message + ", Completion Code: " +
mqe.CompletionCode + ", Reason code: " + mqe.ReasonCode, logTraceLevel.USER);
bErrFlg = true;
sData = "";
}

if(bErrFlg)
DCFrmMQSrvr();

return sData;
}

/// <summary>
/// DisConnect FRM MQ Server.
/// </summary>
/// <returns></returns>
public bool DCFrmMQSrvr()
{
bool bResult = true;
string cMethodName = "DCFrmMQSrvr";

try
{
objLogger.write2Log(cClassName, cMethodName, "Entering...", logTraceLevel.DEVP);

if (mqSndQueue != null && mqSndQueue.IsOpen)
{
objLogger.write2Log(cClassName, cMethodName, "Closing Send Queue.", logTraceLevel.DEVP);
//Close the Queue
mqSndQueue.Close();
}

if (mqGetQueue != null && mqGetQueue.IsOpen)
{
objLogger.write2Log(cClassName, cMethodName, "Closing Get Queue.", logTraceLevel.DEVP);
//Close the Queue
mqGetQueue.Close();
}

if (mqQMgr != null && mqQMgr.IsConnected)
{
objLogger.write2Log(cClassName, cMethodName, "Disconnecting Manager.", logTraceLevel.DEVP);
//Close the Queue Manager
mqQMgr.Disconnect();
}
}
catch (MQException mqe)
{
objLogger.write2Log(cClassName, cMethodName, "MQ error: " + mqe.Message + ", Completion code: " +
mqe.CompletionCode + ", Reason code: " + mqe.ReasonCode, logTraceLevel.USER);
bResult = false;
}
objLogger.write2Log(cClassName, cMethodName, "Exiting....", logTraceLevel.DEVP);
return bResult;
}

public static byte[] StrToByteArray(string str)
{
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
return encoding.GetBytes(str);
}

public static String ByteArrayToStr(byte[] bstr)
{
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
return encoding.GetString(bstr, 0, bstr.Length);
}
}
}

//*****************************************************//
Back to top
View user's profile Send private message
Vitor
PostPosted: Tue Jan 20, 2009 7:00 am    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

Are you saying that all the puts succeed, but the gets fail, or that it all used to work and now has suddenly stopped?

Is there anything relevant in the queue manager logs? Have you checked the other likely causes (the search facility is your friend) of a 2009, especially checking with your network people to see if they've "improved" anything recently?
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
patkatm
PostPosted: Wed Jan 21, 2009 8:28 am    Post subject: No logs are available - MQ server is TPF and client is WinXP Reply with quote

Newbie

Joined: 09 Jan 2009
Posts: 7

I checked up with MQ Server team they state the following:

/******** STARTS *******/
TPF is not like Unix or any other platform. We do not have logs. Our error messages come out on a console, not into a log file. There is nothing in the console whatsoever relating to your channel or either of your queues.

So, the fact remains that you had a working version last week. Something must have changed with that version. I have just sent in a message right now into your exact queue (LINKA.SVSV) and got a good reply from the LINKA.REPLY reply queue.

So, I can't see anything wrong on the host.

It's odd that we receive your MQGET and do send out the MQGET_REPLY IP packets but they are not being acknowledged by your system.

I hope there is a way you can rebuild everything from the very beginning exactly as you did last week. I will completely clear out your reply queue so there are no messages in there so we can start again from scratch.
/******** ENDS *******/

Pls. help I running short of time...to complete...
Back to top
View user's profile Send private message
Vitor
PostPosted: Wed Jan 21, 2009 8:38 am    Post subject: Re: No logs are available - MQ server is TPF and client is W Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

patkatm wrote:
TPF is not like Unix or any other platform. We do not have logs.


Yeesh!

patkatm wrote:
Pls. help I running short of time...to complete...


Boy, have you got problems.....
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
bruce2359
PostPosted: Wed Jan 21, 2009 9:24 am    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9470
Location: US: west coast, almost. Otherwise, enroute.

Quote:
TPF is not like Unix or any other platform. We do not have logs. Our error messages come out on a console, not into a log file. There is nothing in the console whatsoever relating to your channel or either of your queues.

Don't you just love those mainframe guys??

You might want to ask them what enticement you can offer (coffee, doughnuts, aspirin) it will take for a little more information.

Yes, TPF doesn't look like UNIX or Windows. But it is an operating system AND programs execute there.

I'd suspect that MQ on TPF looks somewhat like MQ on z/OS; and that there will be TCPIP, queue manager and channel initiator address spaces to investigate.
_________________
I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live.
Back to top
View user's profile Send private message
patkatm
PostPosted: Wed Jan 21, 2009 10:20 am    Post subject: Reply with quote

Newbie

Joined: 09 Jan 2009
Posts: 7

I hope I got the problem. Will huge reply message create problems... I asked the MQServer team to clear the reply message queue to reconfirm it. After doing so I was able to send n receive (only small test data) for all big replies it is not responding.

Now I think MQGMO_ACCEPT_TRUNCATED_MSG has to be used and try to read the big message fully. Let me search for it....

Thx. guys...Thx. to my MQ Server team.
Back to top
View user's profile Send private message
Vitor
PostPosted: Wed Jan 21, 2009 11:00 am    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

patkatm wrote:
Will huge reply message create problems...


If it's larger than your application's buffer then yes, but not a 2009 I'd have thought. It could be causing a network problem.

patkatm wrote:
Now I think MQGMO_ACCEPT_TRUNCATED_MSG has to be used and try to read the big message fully. Let me search for it....


Erm....I don't think setting the application to accept a truncated message will read a message fully. I think you'll find the message you've read will be truncated......
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
kevinf2349
PostPosted: Wed Jan 21, 2009 12:52 pm    Post subject: Reply with quote

Grand Master

Joined: 28 Feb 2003
Posts: 1311
Location: USA

Vitor wrote:
I think you'll find the message you've read will be truncated......


...and left on the queue too.

I was always under the impression that TPF was simply CICS without the overhead of an operationg system underneath it. ie CICS on the metal. If this is the case then I would have definately thought it would have some logs.

Of course I could be wrong but I would be horrified if it didn't have some logs somewhere......or at least have the ability to produce some.
Back to top
View user's profile Send private message
Vitor
PostPosted: Wed Jan 21, 2009 3:09 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

kevinf2349 wrote:
...and left on the queue too.


Really?

The APR says:

Quote:
MQGMO_ACCEPT_TRUNCATED_MSG
If the message buffer is too small to hold the complete message, allow the MQGET call to fill the buffer with as much of the message as the buffer can hold, issue a warning completion code, and complete its processing. This means that:
When browsing messages, the browse cursor is advanced to the returned message.
When removing messages, the returned message is removed from the queue.
Reason code MQRC_TRUNCATED_MSG_ACCEPTED is returned if no other error occurs.
Without this option, the buffer is still filled with as much of the message as it can hold, a warning completion code is issued, but processing is not completed. This means that:
When browsing messages, the browse cursor is not advanced.
When removing messages, the message is not removed from the queue.
Reason code MQRC_TRUNCATED_MSG_FAILED is returned if no other error occurs.

_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
Vitor
PostPosted: Wed Jan 21, 2009 3:11 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

patkatm wrote:
Will huge reply message create problems... I asked the MQServer team to clear the reply message queue to reconfirm it. After doing so I was able to send n receive (only small test data) for all big replies it is not responding.


Having had a chance to look it up (see previous post), if it was as simple as the message is too big for your app, you'd have got a TRUNCATED_MESSAGE_FAILED rather than a CONNECTION_BROKEN.
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
zhanghz
PostPosted: Wed Jan 21, 2009 5:08 pm    Post subject: Reply with quote

Disciple

Joined: 17 Jun 2008
Posts: 186

Possible some network error? HBINT setting not very correct?


bruce2359 wrote:

Don't you just love those mainframe guys??

You might want to ask them what enticement you can offer (coffee, doughnuts, aspirin) it will take for a little more information.

Yes, TPF doesn't look like UNIX or Windows. But it is an operating system AND programs execute there.

I'd suspect that MQ on TPF looks somewhat like MQ on z/OS; and that there will be TCPIP, queue manager and channel initiator address spaces to investigate.

Mainframe is really a very stable environment. But application (especially open system applications) teams tend to claim it's a Mainframe problem when there is one, maybe because they thought Mainframe was too complex and too "ancient"? So Mainframe people become what is perceived "over"-protective..
Back to top
View user's profile Send private message
bruce2359
PostPosted: Wed Jan 21, 2009 6:09 pm    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9470
Location: US: west coast, almost. Otherwise, enroute.

How kind. I would have said that mainframers are just a crabby lot.
_________________
I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live.
Back to top
View user's profile Send private message
patkatm
PostPosted: Fri Jan 23, 2009 7:02 am    Post subject: Reply with quote

Newbie

Joined: 09 Jan 2009
Posts: 7

I cant use the AllowTruncate option, from the server there is about 14000 bytes coming as response and this is split up into lot of tcp segment messages. I hv to read this some how, accept in splits and then frame them together as response. No idea where to start with... Any configuration i need to set?
Back to top
View user's profile Send private message
Vitor
PostPosted: Fri Jan 23, 2009 7:14 am    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

It seems to me your first problem is to work out why you're getting 2009 errors for big messages. I still have trouble believing it's an application issue.

Also, if you think it is an application issue, why bother with ACCEPT_TRUNCATED_MESSAGE? Make the buffer bigger.

Plus 14000 bytes isn't that big as messages go.
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
bruce2359
PostPosted: Fri Jan 23, 2009 7:19 am    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9470
Location: US: west coast, almost. Otherwise, enroute.

Quote:
I hv to read this some how, accept in splits and then frame them together as response.

No you don't. It's the responsibility of the TCP layer to make sure all IP frames have arrived, are in the correct order, strip off the IP headers, and present the message to WMQ. If TCP can't complete this task do to lost or corrupted frames, TCP will post an error, and your API call will fail.

Continue working with the TPF folks.
_________________
I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Goto page 1, 2  Next Page 1 of 2

MQSeries.net Forum Index » General IBM MQ Support » Put is successful Get fails with 2009 error code.
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.