Author |
Message
|
hdjur |
Posted: Tue May 23, 2006 12:53 am Post subject: 2033 when using MQGMO_COMPLETE_MSG |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
Hi everyone!
I have specified this options MQGMO_WAIT+MQGMO_COMPLETE_MSG,
and I'm receiving 2033. I want qmgr to make reassembling of segmented messages. Putting application has limit of 30k for the buffer, so it has to segment messages and it does so:
PMO.Options = MQPMO_LOGICAL_ORDER | MQPMO_SYNCPOINT
MQPUT MD.MsgFlags = MQMF_SEGMENT
MQPUT MD.MsgFlags = MQMF_SEGMENT
. . .
MQPUT MD.MsgFlags = MQMF_SEGMENT
MQPUT MD.MsgFlags = MQMF_LAST_SEGMENT
MQCMIT
If I copy all messages to another queue, I can get them all, without 2033.
If I add MQGMO_LOGICAL_ORDER to get message options, it does not help.
What am I missing? Thanks in advance! |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue May 23, 2006 4:37 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
How are yo copying the messages to another queue?
What is different about the messages when they are on the other queue?
What is different about the other queue from the first queue?
What options does the sending program specify?
What does the documentation say about getting a 2033 when trying to unsegment messages? _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
hdjur |
Posted: Tue May 23, 2006 5:48 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
Quote: |
What does the documentation say about getting a 2033 when trying to unsegment messages? |
All segments must be available before the logical message may be
received. The reason code MQRC_NO_MSG_AVAILABLE (2033) is returned
on the MQGET if all segments comprising the composite logical message
are not available.
All messages must be available before the logical message may be
received. The reason code MQRC_NO_MSG_AVAILABLE (2033) is
returned on the MQGET if one or more of the segments are missing
Quote: |
What options does the sending program specify? |
MQPMO_LOGICAL_ORDER | MQPMO_SYNCPOINT
Fact is that nothing is different about the other queue, and when I copy all messages before I try to get any of them, I receive 2033. I don't receive 2033 when I try to get them before I copy them all. I know that is somewhat different from what I said before, but that is more accurate, and that is something that I realized after my first post. |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue May 23, 2006 5:51 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
So, then, it's likely that the copy process is not managing the headers correctly, and causing them not to match what they should be. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
hdjur |
Posted: Tue May 23, 2006 5:51 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
another thing specified in putting application:
MQMD_VERSION_2 |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue May 23, 2006 5:58 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
use amqsbcg to dump out the contents of the queue before you copy the messages.
Use amqsbcg to dump out the contents of the other queue after you copy the messages.
Compare the two results. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
hdjur |
Posted: Tue May 23, 2006 6:01 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
Do you mean something regarding ccsid, MQMD_VERSION on getting messages, ... ? I have problem before I copy messages, too. I copied them in the first place, because I suspected something was wrong with the original queue, but it was not. |
|
Back to top |
|
 |
wschutz |
Posted: Tue May 23, 2006 6:12 am Post subject: |
|
|
 Jedi Knight
Joined: 02 Jun 2005 Posts: 3316 Location: IBM (retired)
|
So, which is it?
Quote: |
If I copy all messages to another queue, I can get them all, without 2033.
|
Quote: |
when I copy all messages before I try to get any of them, I receive 2033. I don't receive 2033 when I try to get them before I copy them all. |
Quote: |
I have problem before I copy messages, too. |
_________________ -wayne |
|
Back to top |
|
 |
hdjur |
Posted: Tue May 23, 2006 6:15 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
Jeff, I don't think my problem is in copying messages.
What does that mean:
The MD version does not travel with the message. The version of the
MD on return from MQGET is dependent on the version of the MD on
input of the MQGET. If a Version 1 MD is supplied on the MQGET, the
MD2 specific fields are packaged in an MD extension (MDE) and
prepended to the data.
Shall I set MD version to 2 in receiving application? |
|
Back to top |
|
 |
hdjur |
Posted: Tue May 23, 2006 6:20 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
Again, I would not copy messages at all, if I had no problem to get them from the original queue. When I copy all messages before I try to get any of them, I receive 2033. I don't receive 2033 when I try to get them before I copy them all. |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue May 23, 2006 6:26 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
hdjur wrote: |
I don't receive 2033 when I try to get them before I copy them all. |
So what problem do you get when you try to get them before you copy them, if not a 2033?
The problem you've been asking about is "After I copy these messages, then I get a 2033 - why is that?".
But it seems like your real question is "I have some undiagnosed problem with segmented messages - how do I solve it?"
And we can't help with that until you diagnose it better, or at least describe some actual symptoms - rather than symptoms of a different problem caused by whatever tool you are using to copy the messages in an attempt to diagnose the original problem.
Use AMQSBCG to dump out the original messages on the original queue. This is a browse program, it will leave the messages unchanged on the queue.
Then show us what problem you get when you first try to get these segmented messages. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
hdjur |
Posted: Tue May 23, 2006 6:50 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
O.K. If you suggest so, it must be that I was unclear in describing my problem.
As I said, I receive 2033 when I try to get messages from the original
queue, because "I have some undiagnosed problem with segmented messages".
If the copying process finishes (and I use mo71 for that purpose) before I try to get messages from ANOTHER queue, than I get 2033 while getting from ANOTHER queue. Otherwise I don't get 2033 while getting from ANOTHER queue. I would be satisfied if I figure out, why do I get 2033 when getting messages from the original queue. |
|
Back to top |
|
 |
EddieA |
Posted: Tue May 23, 2006 10:58 am Post subject: |
|
|
 Jedi
Joined: 28 Jun 2001 Posts: 2453 Location: Los Angeles
|
Maybe your PUTting code is not setting some other fields correctly, like the GroupID. And so MQ thinks each segment is part of a different message.
Cheers, _________________ Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0 |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue May 23, 2006 11:03 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Okay, that makes more sense.
You always get a 2033 from the original queue.
You only get a 2033 from the copied queue if you allow M071 to finish copying all messages.
If you start the copy process in m071, and then immediately start your get process, then you get all messages and they unsegment properly and you don't get a 2033?
Is the last message in the segment incorrect somehow? _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
EddieA |
Posted: Tue May 23, 2006 2:28 pm Post subject: |
|
|
 Jedi
Joined: 28 Jun 2001 Posts: 2453 Location: Los Angeles
|
Quote: |
If you start the copy process in m071, and then immediately start your get process, then you get all messages |
But, if the GET specified Complete Message, then the GET wouldn't return anything until they were "all present and correct". It wouldn't return a partial message. And if:
Quote: |
Is the last message in the segment incorrect somehow |
Then it would fail, no matter at what point in the process the GET was issued.
Cheers, _________________ Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0 |
|
Back to top |
|
 |
|