Author |
Message
|
vasilev |
Posted: Mon Jan 18, 2021 12:18 pm Post subject: PCFMessageAgent in bindings mode |
|
|
 Acolyte
Joined: 31 Oct 2014 Posts: 71 Location: Germany
|
Hello,
i am trying to make a java for Qstatus while using PCFMessageAgent in bindings mode.
I read that this parameter should be specified:
MQConnectionFactory.setMQConnectionOptions() - ConnectOption .
i am using:
Code: |
MQQueueManager qmgr;
PCFMessageAgent agt;
try {
qmgr = new MQQueueManager("QM1");
agt = new PCFMessageAgent(qmgr);
.
.
. |
error that i get:
2495 0x000009bf MQRC_MODULE_NOT_FOUND
is it possible to configure somehow and use bindings or i have to use another connection way?
thank you ! _________________ Regards
V.Vasilev |
|
Back to top |
|
 |
tczielke |
Posted: Mon Jan 18, 2021 1:01 pm Post subject: |
|
|
Guardian
Joined: 08 Jul 2010 Posts: 941 Location: Illinois, USA
|
When you run an IBM MQ Java application in bindings mode, you need to make sure that your java library path is set to pick up some Unix shared object files (or DLLs for Windows) that are needed for JNI.
Example on Linux for a 64 bit java:
java -Djava.library.path=/opt/mqm/java/lib64 MYJavaApp
Is your application properly set to account for this requirement? _________________ Working with MQ since 2010. |
|
Back to top |
|
 |
vasilev |
Posted: Mon Jan 18, 2021 1:08 pm Post subject: |
|
|
 Acolyte
Joined: 31 Oct 2014 Posts: 71 Location: Germany
|
thank you .
specified it and now i get another error - 2110.
tried another function in the code - only with pcf agent and seems to work.
the not working one is using:
var q = (String)responses[i].getParameterValue(MQConstants.MQCA_Q_NAME);
queue = qmgr.accessQueue (q, CMQC.MQOO_BROWSE | CMQC.MQOO_FAIL_IF_QUIESCING);
MQMessage message = new MQMessage ();
MQGetMessageOptions gmo = new MQGetMessageOptions ();
gmo.options = CMQC.MQGMO_BROWSE_FIRST | CMQC.MQGMO_NO_WAIT | CMQC.MQGMO_CONVERT;
after i have added: CMQC.MQOO_INPUT_AS_Q_DEF
i have again new error
2042
not sure with this bindings how many things i need to change.
while using channel/ssl.. all is fine _________________ Regards
V.Vasilev |
|
Back to top |
|
 |
hughson |
Posted: Mon Jan 18, 2021 1:38 pm Post subject: |
|
|
 Padawan
Joined: 09 May 2013 Posts: 1959 Location: Bay of Plenty, New Zealand
|
vasilev wrote: |
var q = (String)responses[i].getParameterValue(MQConstants.MQCA_Q_NAME);
queue = qmgr.accessQueue (q, CMQC.MQOO_BROWSE | CMQC.MQOO_FAIL_IF_QUIESCING);
MQMessage message = new MQMessage ();
MQGetMessageOptions gmo = new MQGetMessageOptions ();
gmo.options = CMQC.MQGMO_BROWSE_FIRST | CMQC.MQGMO_NO_WAIT | CMQC.MQGMO_CONVERT;
after i have added: CMQC.MQOO_INPUT_AS_Q_DEF
i have again new error
2042 |
2042 is MQRC_OBJECT_IN_USE. If you don't intend to have more than one application reading from the queue at a time, then stop the other program. If you have cancelled it without closing the queue first, the queue manager may not yet be aware of its disappearance. You could toggle GET(DISABLED|ENABLED) to force it out.
If you do intend to have more than one application reading from the queue at a time, then ensure you have the queue set to SHARE and not NOSHARE, and also make sure your have DEFSOPT set to SHARED.
vasilev wrote: |
not sure with this bindings how many things i need to change.
while using channel/ssl.. all is fine |
It's possible that the differences you are seeing are due to cancelling applications hard and the queue manager not noticing that they are no longer there yet. Perhaps the channels are able to shutdown the connection to the queue manager better than a hard cancel of a locally bound application.
Cheers,
Morag _________________ Morag Hughson @MoragHughson
IBM MQ Technical Education Specialist
Get your IBM MQ training here!
MQGem Software |
|
Back to top |
|
 |
vasilev |
Posted: Mon Jan 18, 2021 2:06 pm Post subject: |
|
|
 Acolyte
Joined: 31 Oct 2014 Posts: 71 Location: Germany
|
hello,
thank you. yes.
till now I haven't seen them in client mode, but this is a development machine .. so they are not used so much.
I was just wondering if in the java code I can configure something to suppress these warnings.
not sure what happened, but now I don't get any errors and all is working fine. _________________ Regards
V.Vasilev |
|
Back to top |
|
 |
hughson |
Posted: Mon Jan 18, 2021 2:13 pm Post subject: |
|
|
 Padawan
Joined: 09 May 2013 Posts: 1959 Location: Bay of Plenty, New Zealand
|
vasilev wrote: |
I was just wondering if in the java code I can configure something to suppress these warnings. |
It's your code, you can choose to ignore the error codes that MQ gives you if you like. Not sure you'd get very far though!
Cheers,
Morag _________________ Morag Hughson @MoragHughson
IBM MQ Technical Education Specialist
Get your IBM MQ training here!
MQGem Software |
|
Back to top |
|
 |
fjb_saper |
Posted: Tue Jan 19, 2021 5:49 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
vasilev wrote: |
thank you .
specified it and now i get another error - 2110.
tried another function in the code - only with pcf agent and seems to work.
the not working one is using:
var q = (String)responses[i].getParameterValue(MQConstants.MQCA_Q_NAME);
queue = qmgr.accessQueue (q, CMQC.MQOO_BROWSE | CMQC.MQOO_FAIL_IF_QUIESCING);
MQMessage message = new MQMessage ();
MQGetMessageOptions gmo = new MQGetMessageOptions ();
gmo.options = CMQC.MQGMO_BROWSE_FIRST | CMQC.MQGMO_NO_WAIT | CMQC.MQGMO_CONVERT;
after i have added: CMQC.MQOO_INPUT_AS_Q_DEF
i have again new error
2042
not sure with this bindings how many things i need to change.
while using channel/ssl.. all is fine |
This is expected for XMIT queues which have an open exclusive.
Do not walk through the messages, use the status enquiry and make sure the MONQ attribute is set to LOW or higher.  _________________ MQ & Broker admin |
|
Back to top |
|
 |
vasilev |
Posted: Tue Jan 19, 2021 7:43 am Post subject: |
|
|
 Acolyte
Joined: 31 Oct 2014 Posts: 71 Location: Germany
|
This is correct, the question is that on some environments and in some organisations - monitoring is not enabled and this does not depends on me ..
so i wanted to make some solution in the general case.
perhaps i can do one check more - if MSGAGE is empty - then go trough browse , if not - then take the MSGAGE parameter.
this is better i guess ? _________________ Regards
V.Vasilev |
|
Back to top |
|
 |
fjb_saper |
Posted: Wed Jan 20, 2021 8:46 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
vasilev wrote: |
This is correct, the question is that on some environments and in some organisations - monitoring is not enabled and this does not depends on me ..
so i wanted to make some solution in the general case.
perhaps i can do one check more - if MSGAGE is empty - then go trough browse , if not - then take the MSGAGE parameter.
this is better i guess ? |
It is still a crap chute because you can't walk through the messages on an XMITQ. It is either opened in EXCLUSIVE or get inhibited. So no Joy. It would be better to set the qmgr attribute MONQ on the qmgr or queue to LOW and redo the inquiry. Ask them why they do not allow monitoring as it gives you important information like last put date and time and last get date and time, as well as oldest message age... and with MONQ=LOW the overhead is negligeable. You really should be in an environment were milliseconds matter before you turn monitoring off.  _________________ MQ & Broker admin |
|
Back to top |
|
 |
|