You're seeing just the function pub, go back to Gnat module for more information.
Link to this function

pub(pid, topic, message, opts \\ [])

View Source


pub(t(), String.t(), binary(), keyword()) :: :ok

Publish a message

{:ok, gnat} = Gnat.start_link()
:ok =, "characters", "Ron Swanson")

If you want to provide a reply address to receive a response you can pass it as an option. See request-response pattern.

{:ok, gnat} = Gnat.start_link()
:ok =, "characters", "Star Lord", reply_to: "me")

If you want to publish a message with headers you can pass the headers key in the opts parameters like this.

{:ok, gnat} = Gnat.start_link()
:ok =, "listen", "Yo", headers: [{"foo", "bar"}])

Headers must be passed as a t:headers() value (a list of tuples). Sending and parsing headers has more overhead than typical nats messages (see the Nats 2.2 release notes for details), so only use them when they are really valuable.