# Seeking for Async architecture advice

**URL:** <https://forums.fsharp.org/t/seeking-for-async-architecture-advice/4974>\
**Category:** General\
**Created:** [November 16, 2025, 8:50am UTC](https://forums.fsharp.org/t/seeking-for-async-architecture-advice/4974 "2025-11-16T08:50:00Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![babysnakes](https://avatars.discourse-cdn.com/v4/letter/b/96bed5/32.png) [@babysnakes](https://forums.fsharp.org/u/babysnakes)\
**Post date:** [November 16, 2025, 11:49am UTC](https://forums.fsharp.org/t/seeking-for-async-architecture-advice/4974/3 "2025-11-16T11:49:07Z")

</div>

Thank you very much for the detailed answer. My use case is pretty simple but does require communications between jobs:

- One job to listen to events / responses from the web socket and pass it ordered as strings to a channel without back-pressure to be consumed by other job
- Second job that listens to channel messages and send each in order to the websocket.
- There will be a couple of jobs and channels for parsing JSON and handling different types of responses.

Basically it’s a tray-icon app that communicates with tiling window manager and reflect the changes in the system tray. In _Rust_ I wrote an app with similar scope using `tokio` and while you’ll be right to say it’s overkill, it was pretty easy to implement 🙂.

Thinking again on the problem, there isn’t much difference in scope if I use jobs/channels or `MBP`s for this kind of scope. In both cases I need to listen and react on exceptions and disposals.

Maybe I’ll try to continue using `MBP`s and see how it goes…

Thanks

---

_[View the full topic](https://forums.fsharp.org/t/seeking-for-async-architecture-advice/4974)._
