Skip to content

Commit

Permalink
Merge pull request #1343 from hubertlepicki/feature/1342-subscription…
Browse files Browse the repository at this point in the history
…-pool-size-documentation

[#1342] Add note on the need of fixed :pool_size to guide
  • Loading branch information
benwilson512 authored Oct 2, 2024
2 parents a093119 + 87bc90e commit e37e285
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 0 deletions.
8 changes: 8 additions & 0 deletions guides/subscriptions.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,14 @@ line:
Supervisor.start_link(children, opts)
```

> Note: If your application is deployed in an environment, where the number of CPU cores can differ between the application instances,
> be sure to specify a fixed `:pool_size` option, otherwise the messages will not be delivered reliably between your nodes. This can
> happen often on cloud deployment platforms.
```elixir
{Absinthe.Subscription, name: MyAppWeb.Endpoint, pool_size: 8}
```

See `Absinthe.Subscription.child_spec/1` for more information on the supported
options.

Expand Down
4 changes: 4 additions & 0 deletions lib/absinthe/subscription.ex
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ defmodule Absinthe.Subscription do
compressed or not.
* `:pool_size` - (Optional - default `System.schedulers() * 2`) An integer
specifying the number of `Absinthe.Subscription.Proxy` processes to start.
You may want to specify a fixed `:pool_size` if your deployment environment
does not guarantee an equal number of CPU cores to be available on all
application nodes. In such case, using the defaults may lead to missing
messages. This situation often happens on cloud-based deployment environments.
"""
@spec child_spec(atom() | [opt()]) :: Supervisor.child_spec()
def child_spec(pubsub) when is_atom(pubsub) do
Expand Down

0 comments on commit e37e285

Please sign in to comment.