blob: 8dbe9c7cc437f809057bddc8bc41b3f109bcb710 [file] [log] [blame]
Key:
F = Functional
PF = Partially Functional
NR = Needs Additional Review
ND = Needs Additional Design
NF = Not Functional
Connection:
variables/configuration:
- reconnect: F, NR, ND
+ reconnect functionality is done and the API semantics provided
are ready for review
+ reconnect policies need to be finished, there is currently
only one hardcoded reconnect policy (retry every three
seconds), we need to define the pre-canned policies that we
want to support and a means to configure them, as well as a
very simple plugin/callback for defining ad-hoc policies
+ need to feed failover exchange into the reconnect policy
+ acks can be lost on reconnect
+ handle reconnect during commit/rollback
- timeout: NF
+ some sort of timeout threshold for killing the connection
methods:
- open/__init__: F, ND
+ need to support kerberos
+ need a better way of supplying various kinds of configuration:
- authentication info
- transport specific configuration options, e.g
- heartbeat
- socket options
- tcp-nodelay
- multiple brokers
- session: F, NR
- connect: F, NR
- disconnect: F, NR
- connected: F, NR
- close: F, NR, ND
+ currently there is no distinction between a "close" that does
a complete handshake with the remote broker, and a "close"
that reclaims resources, this means that close can fail with
an exception, I don't like this as it is unclear to the user
if there is a responsibility to do further cleanup in this
case
errors:
- ConnectionError: F, NR
+ ConnectError F, NR
+ Disconnected F, NR
- notification of disconnect?
Session:
methods:
- sender: F, NR, ND
+ need to detail address options
+ need to define subject pattern semantics
+ consider providing convenience for sender/receiver caching
+ need to provide sync option, possibly change default
- receiver: F, NR, ND
+ need to detail address options
+ need to define filter syntax/semantics
+ consider providing convenience for sender/receiver caching
+ need to provide sync option, possibly change default
- acknowledge: F, NR
- reject: NF
- release: NF
- commit: F, NR
- rollback: F, NR
- next_receiver: F, NR
- close: F, ND
+ see comment on Connection.close
errors:
- SessionError: F, NR, ND
+ SendError: F, NR, ND
+ ReceiveError: F, NR, ND
+ should there be fatal/non fatal variants?
Sender:
methods:
- pending: F, NR
- send: F, NR
- sync: F, NR, ND
+ currently this blocks until pending == 0, I'm thinking of
renaming this to wait and adding a slightly richer interface
that would let you wait for something like pending < n
- close: F, NR
errors:
- SendError
+ InsufficientCapacity
+ need specific subhierarchy for certain conditions, e.g. no such queue
Receiver:
methods:
- pending: F, NR
- listen: F, ND
+ see comment on Session.fetch
- fetch: F, NR, ND
+ explicit grant for receiver
+ changing capacity/prefetch to issue credit on ack rather than
fetch return
- sync/wait: NF
- close: F, NR
errors:
- ReceiveError
+ Empty
+ need specific subhierarchy for certain conditions, e.g. no such queue
Message:
- standard message properties: F, NR, ND
- map messages: F, NR
+ needs interop testing: NF
+ needs java impl: NF
- list messages: F, NR, NI
+ needs interop testing: NF
+ needs java impl: NF
- boxed types: NF
Address:
- syntax: F, NR
+ need to consider whitespace in name/subject
+ consider unquoted string concept
- subject related changes, e.g. allowing patterns on both ends: NF
- creating/deleting queues/exchanges F, NR
+ need to handle cleanup of temp queues/topics: F, NR
+ passthrough options for creating exchanges/queues: F, NR
- integration with java: NF
- queue browsing: F, NR
- temporary queues: NF
- xquery: NF
Testing:
- stress/soak testing for async: NF
- stress/soak testing for reconnect: NF
- interop testing: NF
- multi session and multi connection client tests: NF
Documentation:
- api level docs largely present but need updating and elaboration
- tutorial: NF
Examples:
- drain: F, NR
- spout: F, NR
- server: F, NR
- client: NF
- reservations: F, NR
+ code: F, NR
+ doc: NF
- other examples, e.g. async?
Miscellaneous:
- standard ping-like (drain/spout) utilities for all clients: NF
- caching of resolved addresses: F, NR
- consider using separate session for query/deletion/creation of addresses