simplexmq icon indicating copy to clipboard operation
simplexmq copied to clipboard

messaging services

Open epoberezkin opened this issue 2 months ago • 0 comments

Agent:

  • [x] finalize initial and queue subscriptions #1672
  • [x] ~possibly, use flag to exclude already subscribed queues - although this API is no longer used beyond tests~
  • [x] ~mark queues as associated in subscribeConnections and in subscribeAllConnections (if needed)~ (already done in AgentClient) #1671
  • [x] process queue/service associations in delayed subscription results (in processSMPTransmissions) #1671
  • [x] return events for service subscriptions, with count and hash mismatch indications #1671
  • [x] process SALL event (maybe rename to ALLS?) - probably send agent event to chat #1671
  • [x] process ENDS event #1677
  • [ ] ~mark connection as deleted on DELD event (an old gap)~
  • [x] account for server keyhash when loading service #1671
  • [x] error when setting per-connection isolation and services at the same time - when creating an agent and when changing network settings #1670
  • [x] ~possibly, register service ID in TSessionSubs when service is just connected~
  • [x] disassociate all queues when service ID changes #1672
  • [x] when creating new queue, validate that returned service ID is the same as in transport session (allow Nothing, for backward compatibility) #1672
  • [x] ~possibly, improve service subscription error handling.~
  • [x] treat BAD_SERVICE as temporary error #1672
  • [x] send service subscription error #1677
  • [x] differentiate temporary and permanent errors #1672
  • [x] update service in the database if it has different ID, re-associate queues, and send event #1677
  • [ ] ~check DB index for getting queues with service present, possibly add user_id to rcv_queues (and snd_queues?) and add index on (user_id, host, port)~

Agent tests:

  • [x] test that counts and hashes match, and new events are received.
  • [ ] test migration of client to and from services, and that delivery works for all queues.
  • [ ] test message delivery during subscription
  • [ ] possibly, test additional certificate signature

SMP server

  • [x] ~maintain hashes in STM in-memory storage for NTF and RCV services~
  • [x] remove option to accept service credentials, always allow them by default #1676
  • [x] stats for service subscriptions and count/hash differences #1676
  • [x] remove delivery threads when service is unsubscribed/client disconnected (CSADecreaseSubs) #1676
  • [x] finalize subscriptions to message services - compare counts and hashes; deliver subscription errors #1676
  • [x] possibly, maintain IDs hash in session states #1676
  • [x] correctly handle when old clients do not provide IDs hash in requests #1676
  • [x] ~possibly, remove "proxyServer" flag from SMP transport handshake~

NTF service improvements:

  • [x] validate that subscription counts and hashes match in NTF server, log warnings otherwise #1676
  • [x] ~stats for service subscriptions and count/hash differences in NTF server~

Questions:

  • [ ] NTF server: possibly, resubscribe queues after errors (NSErr and NSService)
  • [ ] SMP server: possibly, include service subscriptions in control port commands?
  • [ ] allow individual subscriptions within service session to handle errors?

epoberezkin avatar Nov 07 '25 22:11 epoberezkin