OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

wsn message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [wsn] Use cases: Durable Subscription


These are some good use cases.  I'm sure there are more we could come up
with, but this is enough to call out some fundamental issues.    This is
where queuing/replay semantics come into play.  The reliable messaging
protocol my work most of the time, but that's really a session oriented
thing.  Should the durability and replay of a message outlive a point to
point session between two endpoints?

We need to identify the issues and describe some rules for behavior.
- How does one specify durability? It sounds like something you do in
the subscribe operation...are there other ways to do it?
- What do we call this thing?  JMS calls it a durable subscription.
Should we adopt that terminology or create something new?
- What is the duration of the durability?  (How long do saved messages
need to be saved?).  We could use the termination time of the message
and do it on a per message basis.  
- Should we be prescriptive on when and how stored messages are
discarded?  I think we should keep that open to interpretation.  For
example, depending on the implementation the messages might be cleaned
up periodically or they could even be discarded during the replay itself
which could lead to expired messages showing up occasionally in
management tools that browse the stored messages.  As long as we state
that expired messages should not be delivered I think we're OK.
- JMS identifies the "reconnected" subscriber by using a combination of
a connection id and a subscription name.  What should we use? An EPR + a
topic expression?
- Do we need to flag a message when it has been stored and replayed?  I
think we should.  It can provide a hint to the receiver that there may
be side affects such as out of order delivery.
- Come to think of it, are there out of order delivery issues that we
need to deal with. As messages are being replayed, freshly published
messages could also be arriving at the same time.  Is that something
that can be addressed with the underlying RM processor?  It is supposed
to be able to handle that kind of thing, but we should think about
whether we need to specify anything else over and above that.

Dave


-----Original Message-----
From: Rick Cobb [mailto:rcobb@KnowNow.com] 
Sent: Wednesday, December 15, 2004 7:36 PM
To: wsn-oasis (E-mail)
Subject: [wsn] Use cases: Durable Subscription

Thought I'd get the ball rolling on this with some small, perhaps a
little unusual, cases.

Consumers that can not tolerate missed notifications in the case of
(sometimes prolonged) network or system failure need durable
subscriptions.  

Consider a notification producer (say, an RFID reader) which provides
inventory change events (item foo walked out the door, item bar went on
the shelf).  A consumer managing the state of inventory (there are 7
items with bar's SKU# on that shelf) can not maintain an accurate count
unless it receives all notifications.  If the network fails, the
producer (or an intermediate broker) must maintain enough state to
replay any messages that happened while the consumer is unreachable.

This may be solvable with 'just' reliable messaging -- however, the time
and overhead horizon can be large, and the consumer's actual addressing
may change upon reconnection. For example:

Some applications which aggregate state (say a stock quote trend on a
spreadsheet) are only occasionally connected.  Imagine the case where
you regularly analyze stock trading trends on your laptop.  You want
every bid and ask for a particular instrument to analyze the volatility
of that instrument.  Now you get on an airplane, and play with your
analyzation formulae while you're in the air.  When you land, you don't
log in till the following morning, and you log in from your hotel.  You
still want to receive all of the individual updates at this time to
build your new trend state.

Now take a nice long holiday.  When you return, the notification
producer (or broker) is unlikely to have retained all updates.  In this
case, we have reached the point where the 'GetCurrentMessage and then
updates' pattern would need to be applied (or, one would hope, someone
might migrate to a better aggregator than Excel :-).

In the second case, the application can know when it is going to be
off-line, and use pause/resume semantics.  In the first, network outages
or system outages cause the fundamental inability to deliver the
notification, so no pause/resume can be generated or expected.

-- ReC




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]