biztalk - De-batching and asynchronous processing of the messages -
problem description:
1.there biztalk application receiving formatted/zipped data file containing > 2 million data records.
2.created pipeline component process file , 'de batching' these 2 million records of data smaller slice-messages ~2000 records each .
3.slice-messages being sent sql port , processed stored procedure.slice-messages contains filename , batch id.
questions:
a.what best way know slice-messages received , processing of whole file completed on sql side ?
b.is there way in biztalk port "do not send message of type b, until messages of type have been send" (messages priority)?
here possible solutions i've tried :
s1.add specific 'end of file' tags end of last slice-message saying file being processed , stored procedure receive part of message mark file completed. because messages being delivered asynchronously last message can received on sql earlier other messages , have false-competed event. solution possible "ordered delivery ports" - type of ports have poor performance because sending 1 message @ time.
s2.transfer total records count every slice-message , run count() sql statement after every slice-message received. because table data stored super huge, running count filename parameter takes time.
i'm wondering if there better solution know messages being received ?
have pipeline component emit "batch" message contains count of records in batch , unique identifier can link slice-messages records. have both stored procedure processes slice-message , batch message check see if batch total (if exists yet slice-message process) matches processed total, if match, you've finished processing them all.
Comments
Post a Comment