Kane. Citizen Kane. Charles Foster Kane, to be exact, Publisher extraordinaire. Rosebud.
Kane is for publishing and subscribing to topics using Google Cloud Pub/Sub.
mix.exs
:def deps do
[{:kane, "~> 0.9.0"}]
end
Pull, process and acknowledge messages via a pre-existing subscription:
{:ok, token} = Goth.fetch(MyApp.Goth)
kane = %Kane{
project_id: my_app_gcp_credentials["project_id"],
token: token
}
subscription = %Kane.Subscription{
name: "my-sub",
topic: %Kane.Topic{
name: "my-topic"
}
}
{:ok, messages} = Kane.Subscription.pull(kane, subscription)
Enum.each messages, fn(mess)->
process_message(mess)
end
# acknowledge message receipt in bulk
Kane.Subscription.ack(kane, subscription, messages)
Send message via pre-existing subscription:
topic = %Kane.Topic{name: "my-topic"}
message = %Kane.Message{data: %{"hello": "world"}, attributes: %{"random" => "attr"}}
result = Kane.Message.publish(kane, message, topic)
case result do
{:ok, _return} -> IO.puts("It worked!")
{:error, _reason} -> IO.puts("Should we try again?")
end
Hints:
For more details, see the documentation.