24. module Resque
class Consumer
class << self
def queue(name)
@queue = name
end
def timeout(seconds=nil)
@lock_timeout = seconds unless seconds
@lock_timeout || 1.hour
end
def exclusive(param)
@exclusive = param
self.extend(Resque::Plugins::LockTimeout) if exclusive?
@lock_timeout ||= 1.hour
end
def publish(message={})
Resque.enqueue(self, message)
end
...
end
end
end
25. module ActiveMQ
class Consumer
class << self
attr_reader :queue_name, :queued_process, :headers, :timeout_value
def queue(name)
@queue_name = "/queue/#{name}"
end
def timeout(seconds)
@timeout_value = seconds
end
def exclusive(param)
@exclusive = param
end
def publish(message = {})
client = Stomp::Client.new(NephelaeConfig[:broker].merge(:max_reconnect_attempts => 1))
client.publish(queue_name, message.to_yaml, {
:persistent => true, :suppress_content_length => true
})
end
...
end
end
end
26. require 'xmpp4r'
module XMPP
class Consumer
class << self
attr_reader :queue_name, :queued_process, :timeout_value
def queue(name)
@queue_name = "#{name}@localhost"
end
def timeout(seconds)
@timeout_value = seconds
end
def exclusive(param)
@exclusive = param
end
def publish(message={})
publisher_client.send(Jabber::Message.new(queue_name, message.to_yaml))
end
...
end
end
end
34. module Network
class Ver1
def insert_filter_rule(filter_rule)
filter_rule.firewalls.in_parallel do |firewall|
ssh_executor = SSHExecutor.new(firewall.ip_address, 'sservice')
result = ssh_executor.exec(
:insert_filter_firewall_rules, :rule => filter_rule,
:internal_address => filter_rule.ip_pair.private_ip,
:firewall => firewall
)
raise "Insertion failed: #{result[:out]}" if result[:status] != 0
end
filter_rule.update_attribute(:status, :done)
end
def insert_dhcp_entry(vm)
vm.zone.dhcps.in_parallel do |dhcp_server|
result = dhcp_server.synchronize
raise "DHCP failed: #{result[:out]}" if result[:status] != 0
end
end
end
end
38. module Network
module Manager
extend self
def for(versioning_object)
versioning_object.version == "2.0" ? Network::Ver2.new : Network::Ver1.new
end
end
end
39. module Network
module Manager
extend self
def for(versioning_object)
versioning_object.version.constantize.new
end
end
end
Network::Manager.for(pool).insert_filter_rule(virtual_machine)
40. Várias formas de
atacar o problema
r bu llet
os ilve
N
Resumindo
Su bene fício
an
ec Cu sto X
es
sida
de