Skip to content

veryevilzed/exrabbit_tools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Exrabbit.Tools

Реактивный хелпер

EXAMPLE USAGE

mix.exs


defmodule Demo.Mixfile do
  use Mix.Project

  def project do
    [app: :demo,
     version: "0.0.1",
     deps: deps
  end

  def application do
    [
     applications: [:exrabbit_tools],
     mod: {Demo, []}
    ]
  end

  def dev, do: [
  ]

  defp deps do
    [ { :exrabbit_tools, git: "path_to_exrabbit_tools.git" } ]
  end
end

config/config.exs

[ demo:[
    rabbit_config: [
      rabbit_demo_1: [
        connect: [
          username: "guest",
          password: "guest",
          host: '127.0.0.1',
          virtual_host: "/",
          heartbeat: 5
          ],
          
        queue: "test1",
        # queue: ["test1", "test2"], # Using for multi queue
        
        exchange: nil,
        exchange_key: ""
        #exchange_queue: nil, # For annonimus queue
        #exchange: "ex1", # Using for Exchange
      ]
    ]
  ]
]


supervisor.ex


defmodule Demo.Supervisor do
  use Supervisor.Behaviour

  import Exrabbit.Tools.Supervisor, only: [get_listeners: 1]

  def start_link do
    :supervisor.start_link(__MODULE__, [])
  end

  def init([]) do
    children = Keyword.get(Mix.Project.config, :rabbit_config, []) |> get_listeners
    supervise(children, strategy: :one_for_one)
  end
end

worker.ex


defmodule Demo.Worker do
  use GenServer.Behaviour

  def start_link(_), do: :gen_server.start_link(__MODULE__, [], [])

  def init(_) do
    Exrabbit.Tools.join(:rabbit_demo_1, self)
    { :ok, nil }
  end


  def handle_call({:rabbit, body, :rabbit_demo_1}, _from, _state) do
    # Do here
  end

  def terminate(_, _) do, Exrabbit.Tools.leave(:rabbit_demo_1, self)
end

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages