by =?Utf-8?B?TGFkaXNsYXYgTXJua2E=?= <LadislavMrnka@[EMAIL PROTECTED]
Aug 1, 2008 at 06:49 AM
Hello,
I am facing problem with one of my orchestration. The process in
orchestration is as follow:
1. Receive message (orchestration is published as Web Service - receive is
one way web method)
Scope - long running transaction
2. Extract key from promoted properties of general do***ent schema
3. Convert message (in general do***ent schema) to XmlDo***ent
4. Call another orchestration which uses key to load proper map and
transforms input XmlDo***ent to another XmlDo***ent
5. Send output XmlDo***ent to another system in atomic transaction - non
transactional MSMQ. Correlation is started by this shape - correlation
property is promoted in custom pipeline component.
6. Listen shape - Waiting for reply
6.1. Receive response from non transactional MSMQ
6.2. Wait for timeout, then create TimeoutException and throw it
7. Check if response contains error element
8. Decide shape
8.1. Error appears in response - create ApplicationException and throw
it
8.2. Error doesn't appears in response - create message from response
(assignment to multi part message for calling referenced web service).
Send
created message in atomic transaction - calling one way web method on
referenced web service.
End Scope
Catch System.Exception
9. Log exception to application log
10. Create error message (calling external assembly and assigning
resulting
XmlDo***ent to multi part message for calling referenced web service).
Send
error message - call another one way web method on referenced web service.
End Catch
This orchestration works as expected if everything goes right. But when
exception is thrown and orchestration ends after processing catch block
zombie message occures each time. This message doesn't have any message
type
because message body is empty. It actually contains several context
properties related to ACK like AckType = Ack, AckSend****t = My Physical
MSMQ
****t. I used HAT to find message referenced by AckId - it is serialized
interchange message comming out from physical MSMQ ****t. So I guess it
should
be positive Ack (positive Ack in MSMQ has empty body) from reaching the
destination queue in step 5 but what suprise me is that ACK messages from
administration queue are not picked up. The next thing which I don't
understand is why the zombie message occures only if orchestration throws
and
processes the exception.
My Physical MSMQ ****t is set up as follows:
Type = MSMQ
Acknowledgement Type = FullReachQueue
Administration Queue = ...
Destination Queue = ...
Recoverable = true
Timeout = 15
Timeout units = seconds (setting for testing)
Transactional = false
Retry count = 0
I tryed to make some configuration changes like use Delivery Notification
=
Transmitted on my logical send ****t in orchestration and set up atomic
transaction scope from sep 5 to synchronized. I also tryed to change
Acknowledgement types in physical ****t's settings but neither of these
didn't
changes solve the problem.
Does anybody have an idea where should I look for the solution of this
problem?
Thanks in advance for response,
Ladislav Mrnka