Proposal for Issue
http://www.w3.org/Bugs/Public/show_bug.cgi?id=6431
WS-Eventing does not support pause and resume of subscriptions. The workaround is to use Unsubscribe/Subscribe pattern. But this may create overhead in the Event Source and Subscription Manager, as Subscribe and Unsubscribe may require extra processing, such as authentication and authorization checks, compared to pause/resume.
We propose adding Pause(SubscriptionManager) and Resume(SubscriptionManager) operations.
Proposed Changes
1. Add the following section 3 for Pause operation.
To suspend event delivery related to a subscription, the subscriber sends a request of the following form to the subscription manager:
<s:Envelope
>
<s:Header
>
<wsa:Action>
http://schemas.xmlsoap.org/ws/2004/08/eventing/Pause
</wsa:Action>
</s:Header>
<s:Body
>
<wse:Pause retain=xs:integer?
>
xs:any*
</wse:Pause>
</s:Body>
</s:Envelope>
/s:Envelope/s:Body/*/wse:Pause/@retain=0
Indicate theRequested
maximum number
of last most recent messages
to retain after the pause, and deliver
when the paused subscription is resumed.
Implied value is 0 indicating no message is retained. A negative value
indicates all messages are to be retained up to the limit set bythat
the subscription manager allows. If the
requested maximum number of messages to retainretention value exceeds the
limit thatsubscription manager subscription
managerallows, the subscription
managerit MUST return a
wse:invalidRetentionValue fault. The retained messages
are filtered by the filter, if any, as specified Section 433.1
before being retained.4 on event filtering.
If the request is accepted, the subscription manager MUST reply with a response of the following form:
<s:Envelope
>
<s:Header
>
<wsa:Action>
http://schemas.xmlsoap.org/ws/2004/08/eventing/PauseResponse
</wsa:Action>
</s:Header>
<s:Body
>
<wse:PauseResponse retain=xs:integer?
>
xs:any*
</wse:PauseResponse>
</s:Body>
</s:Envelope>
/s:Envelope/s:Body/*/wse:Pause/@retain
Indicate tThe
maximum number of last most recent messages
the subscription manager agrees to retain. Implied value is the same as in
the request message. If the subscription manager cannot retain the
messages during the pause, it MUST terminate the
subscription and send a Subscription End message as
defined in Section 3.5.
If the subscription manager cannot
pause this subscription, the request MUST fail, and the subscription manager MAY MUST generate
a wse:UnableToPause fault indicating that the pause was not accepted.
Other components of the outline above are not further constrained by this specification.
Table x lists a hypothetical
request to pause the subscription created in Ttable
5 and retains only one the latest
message during pause.
(01) <s12:Envelope
(02) xmlns:s12="http://www.w3.org/2003/05/soap-envelope"
(03) xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
(04) xmlns:wse="http://schemas.xmlsoap.org/ws/2004/08/eventing"
(05) xmlns:ow="http://www.example.org/oceanwatch" >
(06) <s12:Header>
(07) <wsa:Action>
(08) http://schemas.xmlsoap.org/ws/2004/08/eventing/Pause
(09) </wsa:Action>
(10) <wsa:MessageID>
(11) uuid:bd88b3df-5db4-4392-9621-aee9160721f6
(12) </wsa:MessageID>
(13) <wsa:ReplyTo>
(14) <wsa:Address>http://www.example.com/MyEventSink</wsa:Address>
(15) </wsa:ReplyTo>
(16) <wsa:To>
(17) http://www.example.org/oceanwatch/SubscriptionManager
(18) </wsa:To>
(19) <wse:Identifier wsa:IsReferenceParameer=true>
(20) uuid:22e8a584-0d18-4228-b2a8-3716fa2097fa
(21) </wse:Identifier>
(22) </s12:Header>
(23) <s12:Body>
(24) <wse:Pause retain=1 />
(25) </s12:Body>
(26) </s12:Envelope>
Lines (07-09) indicate this is a
request to pause a subscription. Lines (16-21) indicate that the request is
sent to the subscription manager for the subscription created in Ttable
5 .
Table x+1 lists a hypothetical
response to the request in Ttable
x .
(01) <s12:Envelope
(02) xmlns:s12="http://www.w3.org/2003/05/soap-envelope"
(03) xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
(04) xmlns:wse="http://schemas.xmlsoap.org/ws/2004/08/eventing"
(05) xmlns:ow="http://www.example.org/oceanwatch" >
(06) <s12:Header>
(07) <wsa:Action>
(08) http://schemas.xmlsoap.org/ws/2004/08/eventing/PauseResponse
(09) </wsa:Action>
(10) <wsa:RelatesTo>
(11) uuid:bd88b3df-5db4-4392-9621-aee9160721f6
(12) </wsa:RelatesTo>
(13) <wsa:To>http://www.example.com/MyEventSink</wsa:To>
(14) </s12:Header>
(15) <s12:Body>
(16) <wse:PauseResponse />
(17) </s12:Body>
(18) </s12:Envelope>
Line (16) in Ttable
x+1 indicates the request is accepted.
2. Add the following section 3 for Resume operation.
To resume event delivery related to a paused subscription, the subscriber sends a request of the following form to the subscription manager:
<s:Envelope
>
<s:Header
>
<wsa:Action>
http://schemas.xmlsoap.org/ws/2004/08/eventing/Resume
</wsa:Action>
</s:Header>
<s:Body
>
<wse:Resume
>
xs:any
</wse:Resume>
</s:Body>
</s:Envelope>
If the request is accepted, the subscription manager MUST reply with a response of the following form:
<s:Envelope
>
<s:Header
>
<wsa:Action>
http://schemas.xmlsoap.org/ws/2004/08/eventing/ResumeResponse
</wsa:Action>
</s:Header>
<s:Body
>
<wse:ResumeResponse
>
xs:any
</wse:ResumeResponse>
</s:Body>
</s:Envelope>
If the subscription manager cannot resume this subscription, the request MUST fail, and the subscription manager MAY generate a wse:UnableToResume fault indicating that the resumption was not accepted.
Other components of the outline above are not further constrained by this specification.
Table y lists a hypothetical
request to pause resume the
subscription created in Ttable
5
that was paused in Table x and retains only the latest
message during pause.
(01) <s12:Envelope
(02) xmlns:s12="http://www.w3.org/2003/05/soap-envelope"
(03) xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
(04) xmlns:wse="http://schemas.xmlsoap.org/ws/2004/08/eventing"
(05) xmlns:ow="http://www.example.org/oceanwatch" >
(06) <s12:Header>
(07) <wsa:Action>
(08) http://schemas.xmlsoap.org/ws/2004/08/eventing/Pause
(09) </wsa:Action>
(10) <wsa:MessageID>
(11) uuid:bd88b3df-5db4-4392-9621-aee9160721f6
(12) </wsa:MessageID>
(13) <wsa:ReplyTo>
(14) <wsa:Address>http://www.example.com/MyEventSink</wsa:Address>
(15) </wsa:ReplyTo>
(16) <wsa:To>
(17) http://www.example.org/oceanwatch/SubscriptionManager
(18) </wsa:To>
(19) <wse:Identifier wsa:IsReferenceParameer=true>
(20) uuid:22e8a584-0d18-4228-b2a8-3716fa2097fa
(21) </wse:Identifier>
(22) </s12:Header>
(23) <s12:Body>
(24) <wse:Resume />
(25) </s12:Body>
(26) </s12:Envelope>
Lines (07-0924)
indicate this is a request to pause resume a
subscription. Lines (16-21) indicate that the request is sent to the
subscription manager for the subscription created in Ttable
5 .
Table y+1 lists a hypothetical
response to the request in Ttable
y .
(01) <s12:Envelope
(02) xmlns:s12="http://www.w3.org/2003/05/soap-envelope"
(03) xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
(04) xmlns:wse="http://schemas.xmlsoap.org/ws/2004/08/eventing"
(05) xmlns:ow="http://www.example.org/oceanwatch" >
(06) <s12:Header>
(07) <wsa:Action>
(08) http://schemas.xmlsoap.org/ws/2004/08/eventing/PauseResponse
(09) </wsa:Action>
(10) <wsa:RelatesTo>
(11) uuid:bd88b3df-5db4-4392-9621-aee9160721f6
(12) </wsa:RelatesTo>
(13) <wsa:To>http://www.example.com/MyEventSink</wsa:To>
(14) </s12:Header>
(15) <s12:Body>
(16) <wse:ResumeResponse />
(17) </s12:Body>
(18) </s12:Envelope>
Line (16) in Ttable
y+1 indicates the request is accepted.