summaryrefslogtreecommitdiff
path: root/lib/killjoy/tasks/rabbitmq.rake
blob: ebd150031eb0d34ef8577d1528b433f583041e28 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
namespace :rabbitmq do
  require 'active_support/core_ext/string'
  require 'erb'
  require 'yaml'
  require_relative '../rmq/amqp_configuration'

  desc 'setup rabbitmqadmin'
  task :setup do
    sh "wget http://127.0.0.1:15672/cli/rabbitmqadmin"
    sh "chmod 777 rabbitmqadmin"
    sh "sudo mv rabbitmqadmin /usr/local/bin/"
  end

  desc "create admin user"
  task :admin do
    # https://stackoverflow.com/questions/23020908/how-to-access-rabbitmq-publicly
    sh "sudo rabbitmqctl add_user admin admin"
    sh 'sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"'
    sh 'sudo rabbitmqctl set_user_tags admin administrator'
  end

  desc "create sharded exchange."
  task :create do
    configuration = Killjoy::AMQPConfiguration.new
    exchange = configuration.exchange
    exchange_type = configuration.exchange_type
    shards = configuration.shards
    sh "rabbitmqadmin declare exchange --vhost=/ name=#{exchange} type=#{exchange_type}"
    sh "sudo rabbitmqctl set_policy killjoy-shard \"^killjoy$\" '{\"shards-per-node\": #{shards}, \"routing-key\": \"#\"}' --apply-to exchanges"
  end

  desc "delete sharded exchange."
  task :drop do
    sh "sudo rabbitmqctl stop_app"
    sh "sudo rabbitmqctl reset"
    sh "sudo rabbitmqctl start_app"
  end

  desc 'reset rabbitmq'
  task :reset => [:drop, :admin, :create]
end