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

merge: wasi-messaging #6

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
Open

merge: wasi-messaging #6

wants to merge 9 commits into from

Conversation

rvolosatovs
Copy link
Member

@rvolosatovs rvolosatovs commented Dec 3, 2024

Merge WebAssembly/wasi-messaging@55c13e8

guest271314 and others added 9 commits April 17, 2023 09:04
Include local use cases; remove redundant use of the term "service".
* starting alignment to stakeholder review

Signed-off-by: danbugs <[email protected]>

* fresh start

Signed-off-by: danbugs <[email protected]>

* ready for review

Signed-off-by: danbugs <[email protected]>

* clear

Signed-off-by: danbugs <[email protected]>

* fix tabs vs. whitespaces mismatch

Signed-off-by: danbugs <[email protected]>

* small change

Signed-off-by: danbugs <[email protected]>

* typo

Signed-off-by: danbugs <[email protected]>

* typo 2

Signed-off-by: danbugs <[email protected]>

* updated wit to latest version + added examples

Signed-off-by: danbugs <[email protected]>

---------

Signed-off-by: danbugs <[email protected]>
* chore(*): convert to resources and add package version

Signed-off-by: Jiaxiao Zhou (Mossaka) <[email protected]>

* ci: renable the workflow

Signed-off-by: Jiaxiao Zhou (Mossaka) <[email protected]>

* chore(*): added the generated markdown file

Signed-off-by: Jiaxiao Zhou (Mossaka) <[email protected]>

---------

Signed-off-by: Jiaxiao Zhou (Mossaka) <[email protected]>
this commit splits the existing messaging world into two worlds.
1. imports
2. messaging that includes imports world

to follow the convention of other WIT packages in WASI.

It also re-versions the wit package to `0.2.0-draft`

Signed-off-by: Jiaxiao Zhou (Mossaka) <[email protected]>
* feat(*): Updates messaging to support request-reply

This makes several updates to the messaging interface. Initially the
README said that this wasn't going to support request/reply, but based
on my reading of the Kafka, NATS, MQTT, and SQS APIs, this is a fairly
common pattern. Another piece of evidence here is what I've seen as a
wasmCloud maintainer from our users. Request/reply is one of the more
common things we see with a messaging service. Please note that this
doesn't _require_ the use of a reply-to topic, just exposes it for use.

I also did a few other changes here. First is that I added the topic to
the message. This was common across all systems and is often used by code
to select the appropriate logic to perform. I also removed the format
field as this didn't seem to be a common parameter across various services.
We could definitely add a content-type member to this record in the future
if needed, but I think much of that can be passed via the metadata field.

There are other things I might suggest some changes to, but I want to think
on them some more and open some issues to discuss them first

Signed-off-by: Taylor Thomas <[email protected]>

* feat(*): Updates interfaces to be more streamlined

This PR integrates various changes from talking to current users of
messaging in the community as well as conversations among the champions

Signed-off-by: Taylor Thomas <[email protected]>

* feat(*)!: Additional changes based on PR feedback

I also deleted the examples.md for now until we settle on the interface.
It will be easier to add back in once we have some real world examples
to point at

Signed-off-by: Taylor Thomas <[email protected]>

* feat(types): Updates the message type to have configurable fields

Also removes extensions as a guest configuration option (for now)

Signed-off-by: Taylor Thomas <[email protected]>

* feat(types): Renames guest config to just plain simple `config`

In many of the interfaces out there right now, we've moved more towards
just calling these things config

Signed-off-by: Taylor Thomas <[email protected]>

* feat(*): Additional changes to request/reply for streamlining

Also removes the channel parameter I forgot to remove in a previous
commit

Signed-off-by: Taylor Thomas <[email protected]>

* feat(request): Updates request-multi to support scatter/gather operations

One of the uses of request-multi is to support a scatter/gather operation.
In these cases, you might not know how many requests you are going to
receive, so you can't set expected replies. Generally these wait until
timeout and then return the results. This commit adds the ability to
support all the different use cases for request-multi

Signed-off-by: Taylor Thomas <[email protected]>

* ref(*): Simplifies interface and documents scope/portability

After a whole bunch of feedback from the community, I realized we were
still trying to make this interface too much. So I dramatically paired
back the interface to be purely focused on message passing. Further
features like ack/nack, guaranteed delivery, and so on are now out of
scope (see the README for full details).

This was partly inspired by a discussion in the CNCF Wasm WG around this
interface. To be perfectly frank, the level I paired this down to is
essentially the same level of guarantees offered by the wasmCloud
[messaging interface](https://github.com/wasmCloud/messaging). The main
reason being is that there are people actually using that interface for
real applications (with real host implementations). If we can come to
agreement on a simpler interface, it will be easier to add in functionality
such as the things I stripped out in this commit.

Please let me know any feedback you have around this, focusing on whether
or not this covers at least the most basic scenarios

Signed-off-by: Taylor Thomas <[email protected]>

* fixed typos, added subscribe, added messaging-request-reply world, and nits

Signed-off-by: danbugs <[email protected]>

* update auto-generated files and wit-abi-up-to-date version

Signed-off-by: danbugs <[email protected]>

* removed .idea/ and added to .gitignore

Signed-off-by: danbugs <[email protected]>

* updated README

Signed-off-by: danbugs <[email protected]>

* addressing first round of feedback: added type aliases, added remove-metadata method, added new-line at the end of files, improved argument names, removed .gitignore, improved documentation, changed get-subscriptions function name

Signed-off-by: danbugs <[email protected]>

* [pr feedback] added set-metadata method + revisited topic

Signed-off-by: danbugs <[email protected]>

* [pr feedback] changing signature of send

Signed-off-by: danbugs <[email protected]>

---------

Signed-off-by: Taylor Thomas <[email protected]>
Signed-off-by: danbugs <[email protected]>
Co-authored-by: Taylor Thomas <[email protected]>
* Adressing feedback from upstream sync

- clarified comment on `topic` function.
- added portability comment onto `metadata` to avoid it being used as an escape-hatch.
- removed `get-topics` func in favour of using wasi-config for runtime configuration.

* [chore] update markdown files

Signed-off-by: danbugs <[email protected]>

---------

Signed-off-by: danbugs <[email protected]>
Signed-off-by: Roman Volosatovs <[email protected]>
@rvolosatovs rvolosatovs enabled auto-merge (rebase) December 3, 2024 15:11
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.

5 participants