WSRM
WSRM
WSRM specification
http://docs.oasis-open.org/ws-rx/wsrm/200702/wsrm-1.1-spec-os-01.html
Introduction to Reliable Messaging with the Windows Communication Foundation
Microsoft WSRM describing CloseSequence is mandatory.
http://msdn.microsoft.com/en-us/library/vstudio/aa751822(v=vs.100).aspx
WSRM interoperability guide
http://scn.sap.com/docs/DOC-3449
http://msdn.microsoft.com/en-us/library/ff710233.aspx
Findings from compatibilty testing with SAP --> Micosoft .Net
As soon as volumes go up the Microsoft end will run out of open sequences and start rejecting new calls.
This happen becasue the SAP end is not sending CloseSequence, which is mandatory according to Microsoft.
In the SAP end many messages get stuck with the famous error:
"The value of wsrm:Identifier is not a known Sequence identifier."
The messages can't be restarted. VERY unreliable messageing is the result as the message is lost from a business perspective.
The SAP and Microsoft WSRM implementations together provides very unreliable messaging. The implementations are so different that there is no value in using them togheter.
SAP note
1767452 - Consulting note: "Unknown Sequence" for WS-RM
describes possible reasons for the error but provides no solution.
If a network error occur the same problem occur. Recovery of the messages stuck in SAP is not possible.
wsrm docs
http://help.sap.com/saphelp_nw70ehp2/helpdata/en/46/9743916d1115ece10000000a114a6b/frameset.htm
inactivity timeout 7.4
http://help.sap.com/saphelp_nw74/helpdata/en/c0/f59f6163bd4164814602b8465d4d40/frameset.htm
702 inactivity timeout missing
CL_WS_PERSISTENT_SEQUENCE -> IF_WS_SEQUENCE_ADMINISTRATION~SET_INACTIVITY_TIMEOUT
IF_SEQ_RTIME_CONSUMER
IF_SEQ_RTIME_CONSUMER~SET_INACTIVITY_TIMEOUT
Packages
SOAP_WSRM
SESP
SAI
SOAP_SEQ_API
SOAP_SEQ_MANAGER
SOAP_PROXY_RT
CL_SOAP_SEQUENCE_MANAGER
method PROCEED_ON_COMMIT_INT (CL_SOAP_SEQUENCE_MANAGER)
CL_SOAP_SEQ_PERSISTENCY
tables
srt_seq*
CL_SOAP_SEQUENCE_MANAGER
method PROCEED_ON_COMMIT_INT (CL_SOAP_SEQUENCE_MANAGER)
function module SRT_SEQ_SCD_TERMINATE_NEW_C in background task
In SAP:s WSDL files there is no policy specifying ”delivery assurance”.
If we assume “exactly once” (not necessarily in order).
/wsrm:CreateSequence/wsrm:Offer/wsrm:IncompleteSequenceBehaviour – default value is “NoDiscard” indicates that no acknowledged messages in the sequence will be discarded.
The IncompleteSequenceBehaviour is not set in request or response so the default “NoDiscard” applies
The problems is that WCF forgets sequences, however if and when this happens
When WCF sends “unknown sequence” the reasonable thing for sap to do, should be to terminate the sequence and allow for resending not acknowledged messages in a new sequence.
http://wiki.scn.sap.com/wiki/display/ABAPConn/ABAP+Web+Service+Monitors