jordelver
I’ve got a potential project that I think Broadway is well matched for, but I wanted to ask here for a sanity check ![]()
The basic workflow is:
- Periodically fetch data from a JSON HTTP API
- Store / cache the data
- Convert data / munge data into another format
- Provide data over XML HTTP API
To begin with there will only be one endpoint, but in the future there will be many different sources. Each may have different schedules for fetching data.
If I was doing this in Ruby (my background) I would probably use some sort of background job to fetch and convert the data, and then serve the data via Rails.
One reason Broadway is attractive to me is because it has features like rate limiting, which I can see being useful as this scales.
Would you use Broadway for this?
Trending in Questions
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
Hello,
I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind.
However, when I launch mix phx.server, I get an error...
New
Hi everyone,
I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding.
I sta...
New
So my question is quite simple and i have found no conclusive answer on forum, google or AI.
Should we use :erlang.float for Integer to ...
New
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
So i have been using ash framework for a while and i love it. However currently the issue im having with ash framework is the error handl...
New
Other Trending Topics
Edit: 2026 May 15 - This post is archived.
Mob is alive!!
Main docs: mob v0.7.11 — Documentation
A bit of explanation for the slightly c...
New
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ai
- #ecto-query
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #metaprogramming
- #hex











Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
axelson
Disclaimer: I have never actually used broadway
I don’t think that broadway seems like a good fit since it won’t help you with this piece since the official and unofficial producers all pull from an event stream of sorts:
Although perhaps someone who’s actually used broadway could offer more guidance.
sorentwo
I’m extremely biased, but I would use oban. It has periodic jobs, scheduled jobs, retries, resiliency, etc. Broadway is tailored for ingesting high throughout event streams.
jordelver
Oban was actually on my list for consideration
I discovered it last week and haven’t had time to play with it yet but it looks really good 
jordelver
That’s actually part of the reason I was asking the question - the README does focus on usage with event streams as you say. However, this article uses fetching JSON as an example, but not quite in the same way as I was planning, which confused my thinking.
Thanks for your response

svilen
Disclaimer: I haven’t used Oban
I don’t see a reason not to use Broadway, but I haven’t used it extensively myself either. You can give it a go by creating a custom producer as shown in the official guide:
It’s easy to make it do work periodically using
Process.send_after/4.It’s true that Broadway is great for data-ingestion pipelines because you can implement events acknowledgement when dealing with SQS. But if you don’t need that, you can still roll out your producer without acknowledgements and use the rest that Broadway provides.
chasers
I’ve used Broadway extensively. Have not used Oban.
You can use Broadway to poll you just put stuff in your own producer. So you can totally use Broadway here and it would be great.
With Broadway, you do need to understand the lifecycle of a process and your app if you want to make sure you get every event.
Oban is backed by a database so your state is always there. You don’t have to worry about deploys affecting processes, etc. You sacrifice some throughout for this.
So those are mostly your high level trade offs.
If you’re not super comfortable with gen servers I’d say use Oban. If you need all the throughput use Broadway.
Edit: I should maybe clarify. Broadway won’t do the polling for you. Make your poller and put the results in a queue somewhere (ETS probably) and the have your producer pull from that.
sorentwo
There is definitely a difference in throughput between batch ingesting SQS events and pulling from a transactional database. However, I think you’ll be limited by the actual job processing before the job processor’s throughput comes into play.
In my benchmarking Oban can process 15k no-op jobs per second on a single node—and batch processing is currently in the works which will increase that throughput significantly.
akoutmos
I have written a few article/tutorials on Broadway and perhaps those can help inform your decision:
https://akoutmos.com/post/using-broadway/
https://akoutmos.com/post/broadway-rabbitmq-and-the-rise-of-elixir/
https://akoutmos.com/post/broadway-rabbitmq-and-the-rise-of-elixir-two/
I think some more information may be required to better answer your question:
On the simple side of the spectrum, you could have a simple GenServer with a send_after to do everything that you outlined and just start that process up in your application.ex supervision tree. On the complex side of things, you could run RabbitMQ and Broadway to do your processing, but that depends on the answers to the Qs above
. Like others have mentioned, Oban is also a good tool for the requirements that you outlined.
jordelver
Thanks. I’ll have a read of those docs
jordelver
Your top article is the one I quoted above
Thanks for writing it. I haven’t read your others yet, but will.
To be completely honest, I don’t know the answers to your questions yet - this project is in the very early stages. It’s great to be aware of multiple strategies that may fit, so thanks for contributing to this post