Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(elixir): resend pipe prototype for reliable delivery #2126

Merged
merged 3 commits into from
Nov 5, 2021

Conversation

hairyhum
Copy link
Contributor

@hairyhum hairyhum commented Oct 28, 2021

Current Behaviour

Currently messaging pipelines rely on the underlying protocols for message delivery guarantees (e.g. TCP).
Those intermediate workers or transports may or may not implement reliable delivery.

Proposed Changes

Resend pipe is implementing confirms and resends in order to ensure end-to-end reliable delivery
Please see implementations/elixir/ockam/ockam/test/ockam/messaging/delivery_test.exs for example usage

Checks

@hairyhum hairyhum temporarily deployed to contributors October 28, 2021 22:08 Inactive
@hairyhum hairyhum force-pushed the hairyhum/resend-pipe branch 4 times, most recently from bc370b9 to 585f1b3 Compare November 1, 2021 19:54
@hairyhum hairyhum marked this pull request as ready for review November 1, 2021 19:56
@hairyhum hairyhum force-pushed the hairyhum/resend-pipe branch 2 times, most recently from 585f1b3 to 826d763 Compare November 3, 2021 18:56
@hairyhum hairyhum requested a review from spacekookie November 3, 2021 20:02
@hairyhum hairyhum force-pushed the hairyhum/resend-pipe branch 3 times, most recently from dfc6ce2 to 48482bb Compare November 4, 2021 21:36
Recoverable TCP client monitors a standard client and re-connects if it stops
To use in Elixir clients and be able to recover when hub connections fail

Pub sub service allows remote workers to subscribe to a known topic, which will
forward messages to those workers
docs(elixir): examples of using pipes and pub-sub to build reliable delivery over hub

When hub connections are not reliable use recoverable client and pub-sub to create
stable routes

When messages can be lost, use retry pipe to ensure at least once delivery

When messages may be duplicated with recovery and retries, use index ordering
to deduplicate messages
@hairyhum hairyhum force-pushed the hairyhum/resend-pipe branch from 48482bb to 356efed Compare November 5, 2021 14:53
@hairyhum hairyhum merged commit a8a3810 into develop Nov 5, 2021
@hairyhum hairyhum deleted the hairyhum/resend-pipe branch February 4, 2022 19:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant