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 » WebSphere Message Broker (ACE) Support » segmentation concept

Post new topic  Reply to topic
 segmentation concept « View previous topic :: View next topic » 
Author Message
dipankar
PostPosted: Thu Apr 12, 2007 11:27 am    Post subject: segmentation concept Reply with quote

Disciple

Joined: 03 Feb 2005
Posts: 171

Hi All,
Environment:
WBI MB5 CSD 6 MQ 5.3 CSD12
WNIDOWS XP

SAP --> mySAP.com adapter -->MessageFlows --> Legacy

I am getting large message (50 MB or more) from mySAP adapter which need to be processed.
Output format is fixed length.

My mesage flows are
Quote:
MF1:
MQInputNode --> SplitMessage(Compute Node) --> TransformMsg(Compute) --> MQOutput

MF2:
MQInputNode --> MQOutputNode

I am able to split large message into smaller ones.

For example:
I have 50 MB messages
SplitMessage --> splits 50 MB message to five 10MB messages.
TransformMsg --> trasforms each 10MB msgs to fixed length messages
MQOutput --> getting 5 individual messages

However my requirements is to reassemble all the 5 output messages to one single message.

I have seen several posts here about segmentation.

What I have done so far:
Split message(compute node)
Before propagating, I have set

Code:
SET OutputRoot.MQMD.MsgFlags = MQMF_MSG_IN_GROUP;
SET OutputRoot.MQMD.MsgSeqNumber = intMsgNumber;

for the last message (5th message)
SET OutputRoot.MQMD.MsgFlags = MQMF_LAST_MSG_IN_GROUP;
SET OutputRoot.MQMD.MsgSeqNumber = intMsgNumber;


Also I am setting MQMD_VERSION_2. Every property is setting correctly in MQMD whatevet I set.

MF2:
MQInput ---> MQOutput
in MQInput Node, I have checked Logical order and commit by Message group in advance tab.

No results so far. Getting 5 output messages. I am using second message flow for reassembling.

I am missing something basic. Could you please guide me in right direction? What would be best solution?

Thanks a lot in advance.
_________________
Regards
Back to top
View user's profile Send private message
EddieA
PostPosted: Fri Apr 13, 2007 10:36 am    Post subject: Reply with quote

Jedi

Joined: 28 Jun 2001
Posts: 2453
Location: Los Angeles

You either need to read the 1st message in the MQInput, and then use MQGet to read the remaining 4.

Or, look at the Segmentation flags, not the Group flag.

Cheers,
_________________
Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0
Back to top
View user's profile Send private message
sunny_30
PostPosted: Sat Apr 14, 2007 8:13 am    Post subject: Reply with quote

Master

Joined: 03 Oct 2005
Posts: 258

Dipankar,

Grouping and segmentation are two different concepts.

If the end application is configured to pick up the group messages as a single message, the messages are to be sent in a logically sequenced order. If the end application is configured to pick up the segmented messages as one complete message, the messages are to be sent as segments.

For both grouping & segmenting, auto generate a groupId for the 1st message -- ( UUIDASBLOB || X'0000000000000000'). Use the same for all the following messages in MQMD. For 5.0, store it in the DB for reuse. In 6.0, a shared blob variable can be used btwn sequential messages.

Including the above:
for grouping, also set the following values in MQMD for each message--
MsgFlags = MQMF_MSG_IN_GROUP/ MQMF_LAST_MSG_IN_GROUP
and MsgSeqNumber

for segmenting, also set the following values in MQMD for each message--
MsgFlags=MQMF_SEGMENT/MQMF_LAST_SEGMENT
and offset.
offset value gets incremented for each message starting from 0.
Likewise to groupId, you either need to use DB/ shared variables.
1st message offset = 0.
for later messages-->
offset = LENGTH(InputRoot.BLOB.BLOB) + Offset(previous msg's value)

Hope this helps.

-Sunny.
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Sat Apr 14, 2007 10:04 am    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

You need to make the messages from SAP smaller...
Make sure SAP does not collect the Idocs and sends you each individual Idoc As Soon As Possible...

If SAP collects the Idocs and you have the batch factor way up it will make things faster if you need to create files for batch processing...
But for on line transaction processing this is murder...

Check out the adapter and if possible switch on the setting that says make each Idoc it's own message (if that settings doesn't exist it should).

Enjoy
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
dipankar
PostPosted: Mon Apr 16, 2007 6:07 pm    Post subject: Reply with quote

Disciple

Joined: 03 Feb 2005
Posts: 171

Hi Sunny,
Thanks a lot. Segmentation is working fine. My problem was with the GroupID.
I have used second message flow to reassemble the segmented messages to one.

Thanks again.
_________________
Regards
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » segmentation concept
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.