diff --git a/guides/subscriptions.md b/guides/subscriptions.md index 11030ed282..390f4cc6d7 100644 --- a/guides/subscriptions.md +++ b/guides/subscriptions.md @@ -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. + +``` +{Absinthe.Subscription, name: MyAppWeb.Endpoint, pool_size: 8} +``` + See `Absinthe.Subscription.child_spec/1` for more information on the supported options. diff --git a/lib/absinthe/subscription.ex b/lib/absinthe/subscription.ex index e4386019a8..be8d2c7520 100644 --- a/lib/absinthe/subscription.ex +++ b/lib/absinthe/subscription.ex @@ -59,6 +59,9 @@ 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. + If the number of CPUs machines can be different, which is true for certain + cloud-based deployments, make sure to specify this option to avoid message + delivery problems. """ @spec child_spec(atom() | [opt()]) :: Supervisor.child_spec() def child_spec(pubsub) when is_atom(pubsub) do