Skip to content
RabbitMQ adapter for Phoenix's PubSub layer
Elixir
Latest commit c89b05b Mar 24, 2015 @pma Prepare for hex.pm
Failed to load latest commit information.
lib/phoenix/pubsub Initial Version Feb 24, 2015
test Initial Version Feb 24, 2015
.gitignore Initial Version Feb 24, 2015
LICENSE Prepare for hex.pm Mar 24, 2015
README.md Prepare for hex.pm Mar 24, 2015
mix.exs Prepare for hex.pm Mar 24, 2015
mix.lock Initial Version Feb 24, 2015

README.md

Phoenix Pubsub - RabbitMQ Adapter

RabbitMQ adapter for the Phoenix framework PubSub layer.

Usage

Add phoenix_pubsub_rabbitmq as a dependency in your mix.exs file.

def deps do
  [{:phoenix_pubsub_rabbitmq, "0.0.1"}]
end

You should also update your application list to include :phoenix_pubsub_rabbitmq:

def application do
  [applications: [:phoenix_pubsub_rabbitmq]]
end

Edit your Phoenix application Endpoint configuration:

  config :my_app, MyApp.Endpoint,
    ...
    pubsub: [name: MyApp.PubSub,
             adapter: Phoenix.PubSub.RabbitMQ,
             options: [host: "localhost"]

The following options are supported:

  * `host` - The hostname of the broker (defaults to \"localhost\");
  * `port` - The port the broker is listening on (defaults to `5672`);
  * `username` - The name of a user registered with the broker (defaults to \"guest\");
  * `password` - The password of user (defaults to \"guest\");
  * `virtual_host` - The name of a virtual host in the broker (defaults to \"/\");
  * `heartbeat` - The connection hearbeat interval in seconds (defaults to `0` - turned off);
  * `connection_timeout` - The connection timeout in milliseconds (defaults to `infinity`);
  * `pool_size` - Number of active connections to the broker

Notes

  • An Exchange is declared with the name of the Phoenix PubSub server (example: MyApp.PubSub)
  • When subscribing to a topic:
    • a Queue with a server assigned name is declared;
    • the Queue is bound to the Exchange using the topic as routing key;
    • a consumer process is started. The consumer will ack each message in the Queue as it sends the payload to the subscriber pid;
  • Can be used when distributed Erlang is not an option (like when deploying to Heroku); when RabbitMQ is already a dependency (instead of Redis);
  • Uses RabbitMQ routing mechanism, delivering a message directly to a consumer process
Something went wrong with that request. Please try again.