Author |
Message
|
sebastia |
Posted: Thu Feb 13, 2014 4:11 am Post subject: mqrc 3015 |
|
|
 Grand Master
Joined: 07 Oct 2004 Posts: 1003
|
Hi, I am trying to set a queue parameter using PCF under JMS.
Code: |
agent = new PCFMessageAgent ( "localhost", 2415, "MY.SVRCONN" ) ;
System.out.println ( "+++ Connected" ) ;
// Build the request
(1) request = new PCFMessage ( MQConstants.MQCMD_CHANGE_Q ) ;
(2) request.addParameter ( MQConstants.MQCA_Q_NAME, "QL.IN" ) ;
(3) request.addParameter ( MQConstants.MQIA_Q_TYPE, MQConstants.MQQT_LOCAL ) ;
(4) request.addParameter ( MQConstants.MQIA_INHIBIT_GET, MQConstants.MQQA_GET_INHIBITED ) ; // set GET(DISABLED)
(5) request.addParameter ( MQConstants.MQIA_CLWL_Q_PRIORITY, 3 ) ; // set priority
// request.addParameter ( MQConstants.MQCA_Q_DESC, "New Descr" ) ; // set description
|
If I have only (1) and (2), I get rc=3019, ok
With (1) + (2) + (3), I get rc=3015, STRING Parameter Error
What String is wrong ???
(1)+(2)+(4) = 3014 = INTEGER parameter error
(1)+(2)+(5) = 3014 = INTEGER parameter error
(1)+(2)+(6) = 3015 = STRING parameter error
What tools shall I use to read the parameters received to determine why they are invalid ?
A MQ Trace ?
===
Parameters must be :
http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=%2Fcom.ibm.mq.csqzac.doc%2Fpc11160_.htm
// required :
// QNAME (MQCFST)
// QTYPE (MQCFIN) := MQTT_LOCAL ;
So, what STRING is not valid ? The queue name ?? |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu Feb 13, 2014 5:31 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
PCF does not really work well under JMS. It follows a kind of stand alone / java pojo model.
Can you please elaborate what you are doing with the request when trying to send it?
Have fun  _________________ MQ & Broker admin |
|
Back to top |
|
 |
mqjeff |
Posted: Thu Feb 13, 2014 6:21 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
fjb_saper wrote: |
PCF does not really work well under JMS. It follows a kind of stand alone / java pojo model.
Can you please elaborate what you are doing with the request when trying to send it?
Have fun  |
There doesn't appear to be any JMS used at all.
The PCFMessageAgent handles all of the connections, and handles the sending and receiving of messages.
The only string that could be wrong in the combo of 1,2,3 is the queue name. It's the only string there is...
An MQ client trace should probably show you the message data you're building, or you can look at just writing the message directly to a queue (other than the Command Server queue). |
|
Back to top |
|
 |
sebastia |
Posted: Thu Feb 13, 2014 8:00 am Post subject: |
|
|
 Grand Master
Joined: 07 Oct 2004 Posts: 1003
|
What I am trying to do is to change (MQCMD_CHANGE_Q) any parameter of the queue, as
*) PUT(DISABLED/ENABLED)
*) CLWLPRTY(0 lowest .. 9 highest)
*) Description(text)
I have PCF samples from
1) MQ - \\MQ\tools\pcf\samples
2) MS0B - º\ms0b\com.ibm.mq.pcf
Right now the PCF is running in an Eclipse environment
(import com.ibm.mq.pcf.* ,
but it shall end up in a MB flow Java node.
The connection is done using a SVRCONN channel.
I agree in (1)+(2)+(3) there is only one string, this is, the queue name.
I have changed the string literal to "QLIN" and now get mqrc 2085, object does not exist, which is fine. Maybe the dot (".") was the problem. Now I create a queue "QLIN" and get mqrc 3015 again.
Lets run a MQ trace ...
Tx. Sebastian. |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu Feb 13, 2014 11:47 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
If you think the "." was a problem have you tried escaping it?  _________________ MQ & Broker admin |
|
Back to top |
|
 |
sebastia |
Posted: Fri Feb 14, 2014 12:43 am Post subject: |
|
|
 Grand Master
Joined: 07 Oct 2004 Posts: 1003
|
Hi -> tgif, uf
1) I dont know how to escape the dot, sorry, but ...
2) I tried using QLIN as queue name and got 3015 again (already written in my previous post).
As T Rob says in
>>> http://stackoverflow.com/questions/4688919/error-creating-queue-with-websphere-mq-api
... the order of the sentences is important when using PCF.
So, I think there is a sentence missing before providing the queue name ... I am just guessing. I am using AMQSCLMA.C as source, and dont see it.
Thanks. Sebastian. |
|
Back to top |
|
 |
sebastia |
Posted: Fri Feb 14, 2014 12:51 am Post subject: |
|
|
 Grand Master
Joined: 07 Oct 2004 Posts: 1003
|
AMQSCLMA.C resum :
Code: |
.
PCFMsgLen = buildChangeQPCF(pAdminMsg,
AdminMsgLen,
DefnLQ.QName,
TargetCLWLPRTY,
TargetCLWLUSEQ);
.
pPCFHeader->Command = MQCMD_CHANGE_Q; /* "Change Queue" */
pPCFString->Parameter = MQCA_Q_NAME;
strncpy( pPCFString->String, QName, MQ_Q_NAME_LENGTH); /* Specify queue */
pPCFInteger->Parameter = MQIA_Q_TYPE ;
pPCFInteger->Value = MQQT_LOCAL;
pPCFInteger->Parameter = MQIA_CLWL_Q_PRIORITY;
pPCFInteger->Value = TargetCLWLPRTY;
pPCFInteger->Parameter = MQIA_CLWL_USEQ;
pPCFInteger->Value = TargetCLWLUSEQ;
|
So I am still in darkness .. |
|
Back to top |
|
 |
sebastia |
Posted: Fri Feb 14, 2014 3:41 am Post subject: |
|
|
 Grand Master
Joined: 07 Oct 2004 Posts: 1003
|
Hi again. I did run MQ trace.
In 3 seconds, I got
Code: |
14-02-14 12:39 23.890 AMQ3292.0.TRC
14-02-14 12:39 1.175.213 AMQ3340.0.TRC
14-02-14 12:39 0 AMQ3344.0.TRC
14-02-14 12:39 0 AMQ3388.0.TRC
14-02-14 12:39 62.490 AMQ3516.0.TRC
14-02-14 12:39 0 AMQ3812.0.TRC
14-02-14 12:39 126.697 AMQ3836.0.TRC
14-02-14 12:39 16.596 AMQ3844.0.TRC
14-02-14 12:39 0 AMQ3892.0.TRC
14-02-14 12:39 0 AMQ3924.0.TRC
14-02-14 12:39 0 AMQ5500.0.TRC
14-02-14 12:39 21.315 AMQ5696.0.TRC
14-02-14 12:39 0 AMQ5712.0.TRC
14-02-14 12:39 56.496 AMQ5780.0.TRC
14-02-14 12:39 22.453 AMQ6228.0.TRC
14-02-14 12:39 0 AMQ6320.0.TRC
14-02-14 12:39 5.486 AMQ6344.0.TRC
14-02-14 12:39 78.774 AMQ6532.0.TRC
14-02-14 12:39 1.702.074 AMQ6876.0.TRC
14-02-14 12:39 59.026 AMQ7576.0.TRC
14-02-14 12:39 0 AMQ7752.0.TRC
14-02-14 12:39 0 AMQ7884.0.TRC
14-02-14 12:39 0 AMQ7944.0.TRC
14-02-14 12:39 5.916 AMQ8048.0.TRC
14-02-14 12:39 0 AMQ8152.0.TRC
25 File(s) 3.356.426 bytes |
Of course I will try ro read it as simple text .... but maybe my clever coleagues have a better way to read a MQ trace ...
Is there any tool analyzing the 25 files at once and resuming the errors it finds ?
Sebastian. |
|
Back to top |
|
 |
smdavies99 |
Posted: Fri Feb 14, 2014 4:00 am Post subject: |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
PCF stuff is a PITA to get right.
In the past I try it out outside of broker until I:-
1) Get the sending message right
2) Am able to get a non error reply.
Then I set some very unique values in the data I need to retrieve using PCF. Then I can analyze it by looking at the data on the specified reply queue.
When that is correct, I can then get broker to send the correctly formatted request and because I have a sample reply message I can code and test the code that handles it.
So for a Queue Depth problem I'd put a load of messages on the queue, say 1077 (Or a hex data pattern that is easy to find in a message dump).
When it seems to work, read a message and see if you get back the updated QD value. _________________ WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995
Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions. |
|
Back to top |
|
 |
sebastia |
Posted: Fri Feb 14, 2014 6:33 am Post subject: |
|
|
 Grand Master
Joined: 07 Oct 2004 Posts: 1003
|
In fact, I did try to find "3015" in *.TRC and failed.
Then, I remembered few months ago I discovered those traces had the RC's in HEX, so I searched for 0xBC7, with no success.
Need more clues.
Or a weekend to rest.
Enjoy.
Sebastian. |
|
Back to top |
|
 |
Michael Dag |
Posted: Fri Feb 14, 2014 7:10 am Post subject: |
|
|
 Jedi Knight
Joined: 13 Jun 2002 Posts: 2607 Location: The Netherlands (Amsterdam)
|
did you look at the java pcf samples provided with the product in \tools\pcf ? I saw you were using the C sample...  _________________ Michael
MQSystems Facebook page |
|
Back to top |
|
 |
mqjeff |
Posted: Fri Feb 14, 2014 7:14 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
Michael Dag wrote: |
did you look at the java pcf samples provided with the product in \tools\pcf ? I saw you were using the C sample...  |
tools\pcf is all Java as of mq7.1. |
|
Back to top |
|
 |
sebastia |
Posted: Fri Feb 14, 2014 7:18 am Post subject: |
|
|
 Grand Master
Joined: 07 Oct 2004 Posts: 1003
|
Hi, Michael and Jeff.
Yes, I've been thru PCF samples, but they are "inquiry" only. There is no one to "change" the queue values :
Code: |
Directory of c:\MQ\tools\pcf\samples
5.979 PCF_ChannelStatus.java
11.363 PCF_ClearQueue.java
10.891 PCF_CommonMethods.java
6.112 PCF_CreateChannel.java
5.904 PCF_CreateQueue.java
4.612 PCF_DeleteChannel.java
4.415 PCF_DeleteQueue.java
9.705 PCF_DisplayActiveLocalChannels.java
7.730 PCF_DisplayActiveLocalQueues.java
16.640 PCF_DisplayConnections.java
7.568 PCF_ListQueueNames.java
4.524 PCF_StartChannel.java
4.515 PCF_StopChannel.java
9.076 PCF_WalkThroughQueueManagerAttributes.java |
No "MQCMD_CHANGE_Q" in any *.java ...
The most "similar" is PCF_CreateQueue.java :
Code: |
pcfCM.CreateAgent(args.length);
int queueType = MQConstants.MQQT_LOCAL;
// Create the PCF message type for the create queue.
// NB: The parameters must be added in a specific order or an exception (3015) will be thrown <<< interesting comment !
PCFMessage pcfCmd = new PCFMessage(MQConstants.MQCMD_CREATE_Q);
// Queue name - Mandatory.
pcfCmd.addParameter(MQConstants.MQCA_Q_NAME, PCF_CommonMethods.pcfQueue);
// Queue Type - Optional.
pcfCmd.addParameter(MQConstants.MQIA_Q_TYPE, queueType);
// Add description.
pcfCmd.addParameter(MQConstants.MQCA_Q_DESC, "MyQueue");
|
Shall play with it this weekend ...
Sebastian. |
|
Back to top |
|
 |
Michael Dag |
Posted: Fri Feb 14, 2014 7:49 am Post subject: |
|
|
 Jedi Knight
Joined: 13 Jun 2002 Posts: 2607 Location: The Netherlands (Amsterdam)
|
|
Back to top |
|
 |
sebastia |
Posted: Fri Feb 14, 2014 10:55 am Post subject: |
|
|
 Grand Master
Joined: 07 Oct 2004 Posts: 1003
|
Yes, this one does it (CHANGE_Q) :
Code: |
MQMessage[] pcfResponses = agent.send(CMQCFC.MQCMD_CHANGE_Q, parameters); |
Obviously you are better with Google than me, or have more patience !
Thanks, Michael. I'll try it this weekend.
Should you be thirsty and around Plaza Real, you got my number ( ) |
|
Back to top |
|
 |
|