I am trying to trace a problem with pubsub. I confirmed, through logging, that subscription event should get triggered, but client is not receiving it. So I suspect that subscriber loses subscription somewhere along the way. It would be helpful to list all subscribers at the time the message is sent.
object :lock_subscriptions do
...
field :lock_freed, non_null(:lock_result) do
arg(:lock_input, non_null(:lock_input))
config(fn
%{lock_input: %{id: target_id, target_type: target_type}}, _ ->
{:ok, topic: "#{@lock_freed_prefix}:#{target_type}:#{target_id}"}
end)
trigger(:release_lock,
topic: fn
%{success: true, id: target_id, target_type: target_type} ->
"#{@lock_freed_prefix}:#{target_type}:#{target_id}"
|> IO.inspect(label: "SUBSCRIPTION: LOCK-FREED triggered: ")
other ->
other |> IO.inspect(label: "SUBSCRIPTION: NOT FREED")
"not-freed_do-not-publish"
end
)
end
My use case is different, but I’m also trying to find if there is a way to get a list of active subscribers.
@benwilson512 Could you possibly point me in the right direction of figuring out how to find out if there are any active subscribers for a given subscription?
As context, I have some code that does some fairly computationally intensive work and publishes the result via a subscription. If there were some way that I could know whether there were any active subscribers to the subscription, it would be really helpful because then I would just only do the calculations and publish the results if there were actually people subscribed. This is a case where we have things in the application happening that can trigger the re-calculation very frequently, but the calculation is only needed for the purpose of the subscription, so if literally no one is subscribed (which will be the case the large majority of the time), then it would be better to not do the calculation and publish the subscription event at all.
Apologies if this question has already been addressed in the docs or elsewhere. I spent quite a while looking and couldn’t find anything, but I definitely might have missed it.