summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2015-02-07 12:33:06 -0700
committermo khan <mo@mokhan.ca>2015-02-07 12:33:06 -0700
commit65145e6be87df7b0440fb98c11abc23a2b3c49ed (patch)
tree026e5260bf03be83d38d454028023316a555a1ea /lib
parent2bbe4091b513ab40b0540a1315c8946ade21b476 (diff)
use a single topic exchange instead of multiple fanout exchanges.
Diffstat (limited to 'lib')
-rw-r--r--lib/tasks/rabbitmq.rake30
1 files changed, 18 insertions, 12 deletions
diff --git a/lib/tasks/rabbitmq.rake b/lib/tasks/rabbitmq.rake
index 0fbe1c7..22b401c 100644
--- a/lib/tasks/rabbitmq.rake
+++ b/lib/tasks/rabbitmq.rake
@@ -6,20 +6,26 @@ namespace :rabbitmq do
connection.start
channel = connection.create_channel
- # event intake bindings
- exchange = channel.fanout("malwer.events")
- queue = channel.queue("worker.events", durable: true)
- queue.bind("malwer.events")
+ # single malwer topic exchange
+ # routing keys:
+ # * commands.command_type.(agent_id/fingerprint)
+ # * commands can be issued for specific agents
+ # * commands can be issued globally. (e.g. poke a dispostion)
+ # * events.event_type.agent_id
- # poke bindings
- exchange = channel.fanout("malwer.poke")
- queue = channel.queue("worker.poke", durable: true)
- queue.bind("malwer.poke")
+ channel.topic("malwer").tap do |exchange|
+ # event intake bindings
+ queue = channel.queue("worker.events", durable: true)
+ queue.bind(exchange, routing_key: "events.#")
- # cloud queries bindings
- exchange = channel.fanout("malwer.queries")
- queue = channel.queue("worker.queries", durable: true)
- queue.bind("malwer.queries")
+ # poke bindings
+ queue = channel.queue("worker.poke", durable: true)
+ queue.bind(exchange, routing_key: "commands.poke.#")
+
+ # cloud queries bindings
+ queue = channel.queue("worker.queries", durable: true)
+ queue.bind(exchange, routing_key: 'events.scanned.#')
+ end
connection.close
end