Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .rspec
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
--require 'spec_helper'
--format=documentation
3 changes: 3 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
source 'https://rubygems.org'

gemspec
102 changes: 102 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
PATH
remote: .
specs:
bunny_messenger (0.1.8)
bunny (>= 2.18.0)
faraday (>= 1.5.1)
faraday_middleware (>= 1.0.0)
rake (>= 12)

GEM
remote: https://rubygems.org/
specs:
amq-protocol (2.3.2)
bunny (2.19.0)
amq-protocol (~> 2.3, >= 2.3.1)
sorted_set (~> 1, >= 1.0.2)
coderay (1.1.3)
diff-lcs (1.4.4)
faraday (1.5.1)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0.1)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.1)
faraday-patron (~> 1.0)
multipart-post (>= 1.2, < 3)
ruby2_keywords (>= 0.0.4)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-net_http (1.0.1)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday_middleware (1.0.0)
faraday (~> 1.0)
ffi (1.15.3)
formatador (0.3.0)
guard (2.17.0)
formatador (>= 0.2.4)
listen (>= 2.7, < 4.0)
lumberjack (>= 1.0.12, < 2.0)
nenv (~> 0.1)
notiffany (~> 0.0)
pry (>= 0.9.12)
shellany (~> 0.0)
thor (>= 0.18.1)
guard-compat (1.2.1)
guard-rspec (4.7.3)
guard (~> 2.1)
guard-compat (~> 1.1)
rspec (>= 2.99.0, < 4.0)
listen (3.5.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
lumberjack (1.2.8)
method_source (1.0.0)
multipart-post (2.1.1)
nenv (0.3.0)
notiffany (0.1.3)
nenv (~> 0.1)
shellany (~> 0.0)
pry (0.14.1)
coderay (~> 1.1)
method_source (~> 1.0)
rake (13.0.6)
rb-fsevent (0.11.0)
rb-inotify (0.10.1)
ffi (~> 1.0)
rbtree (0.4.4)
rspec (3.10.0)
rspec-core (~> 3.10.0)
rspec-expectations (~> 3.10.0)
rspec-mocks (~> 3.10.0)
rspec-core (3.10.1)
rspec-support (~> 3.10.0)
rspec-expectations (3.10.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-mocks (3.10.2)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-support (3.10.2)
ruby2_keywords (0.0.4)
set (1.0.1)
shellany (0.0.1)
sorted_set (1.0.3)
rbtree
set (~> 1.0)
thor (1.1.0)

PLATFORMS
ruby

DEPENDENCIES
bunny_messenger!
guard-rspec
rspec

BUNDLED WITH
2.1.4
6 changes: 6 additions & 0 deletions Guardfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# frozen_string_literal: true
guard :rspec, cmd: 'bundle exec rspec', notification: true, all_after_pass: true do
watch('spec/spec_helper.rb') { 'spec' }
watch(%r{^spec/.+_spec\.rb$})
watch(%r{^lib/bunny_messenger/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
end
8 changes: 5 additions & 3 deletions bunny_messenger.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@ $LOAD_PATH.push File.expand_path('lib', __dir__)

Gem::Specification.new do |s|
s.name = 'bunny_messenger'
s.version = '0.1.7'
s.version = '0.1.8'
s.summary = 'Hola!'
s.description = 'Bunny Messenger gemt'
s.authors = ['Ivan']
s.email = 'ivan@srgh.tech'
s.files = Dir['lib/**/*'] + ['LICENSE.txt', 'Rakefile', 'README.md']
s.add_development_dependency 'guard-rspec'
s.add_development_dependency 'rspec'
s.add_runtime_dependency 'bunny', '>= 2.18.0'
s.add_runtime_dependency 'httparty', '>= 0.18.1'
s.add_runtime_dependency 'faraday', '>= 1.5.1'
s.add_runtime_dependency 'faraday_middleware', '>=1.0.0'
s.add_runtime_dependency 'rake', '>= 12'
s.license = 'MIT'
end
end
7 changes: 5 additions & 2 deletions lib/bunny_messenger.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@
require 'logger'
require 'pathname'
require 'yaml'
require 'httparty'
require 'faraday'
require 'faraday_middleware'
require 'fileutils'
require 'singleton'
require 'json'

require 'securerandom'
# Basis class for work with RabbitMQ
# - web_host - http://localhost:15672/ - url for web admin
# - auth_params - { username: , password: } credentials for web admin panel
Expand Down Expand Up @@ -37,3 +38,5 @@ class << self
require 'bunny_messenger/exchange_by_name'
require 'bunny_messenger/queue_by_name'
require 'bunny_messenger/consumer'
require 'bunny_messenger/rpc_consumer'
require 'bunny_messenger/rpc_message'
4 changes: 1 addition & 3 deletions lib/bunny_messenger/Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,4 @@
require 'rake'

spec = Gem::Specification.find_by_name 'bunny_messenger'
if defined?(Rake)
Dir["#{spec.gem_dir}/lib/tasks/**/*.rake"].each { |ext| load ext }
end
Dir["#{spec.gem_dir}/lib/tasks/**/*.rake"].each { |ext| load ext } if defined?(Rake)
43 changes: 10 additions & 33 deletions lib/bunny_messenger/config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,41 +4,18 @@ class BunnyMessenger
# Dynamic configuration for gem
class Config
class << self
def auth_params
load_config
BunnyMessenger.auth_params || default_auth_params
end

def connection_params
load_config
BunnyMessenger.connection_params || default_connection_params
end

def web_host
load_config
BunnyMessenger.web_host || default_web_host
end

def structure_file_path
load_config
BunnyMessenger.structure_file_path || default_structure_file_path
end

def migrations_path
load_config
BunnyMessenger.migrations_path || default_migrations_path
%i[auth_params connection_params web_host structure_file_path migrations_path
logger_level].each do |m_name|
define_method m_name do
load_config
BunnyMessenger.send(m_name) || send(['default', m_name].join('_'))
end
end

def logger
load_config
BunnyMessenger.logger || default_logger
end

def logger_level
load_config
BunnyMessenger.logger_level || default_logger_level
end

private

def environment
Expand All @@ -55,9 +32,9 @@ def load_config
@config = YAML.load_file('config/bunny.yml')[environment]
@config.each do |k, v|
if v.is_a?(Hash)
BunnyMessenger.send(k.to_s + '=', v.transform_keys(&:to_sym))
BunnyMessenger.send("#{k}=", v.transform_keys(&:to_sym))
else
BunnyMessenger.send(k.to_s + '=', v)
BunnyMessenger.send("#{k}=", v)
end
end
rescue Errno::ENOENT
Expand All @@ -66,13 +43,13 @@ def load_config
end

def default_logger_level
Logger::DEBUG
Logger::INFO
end

def default_logger
return @default_logger if @default_logger

@default_logger = Logger.new(STDOUT)
@default_logger = Logger.new($stdout)
@default_logger.level = logger_level
@default_logger
end
Expand Down
28 changes: 12 additions & 16 deletions lib/bunny_messenger/consumer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ class BunnyMessenger
# Basis class for consumer
class Consumer
attr_reader :queue

include BunnyMessenger::Loggable

def initialize(queue_name)
Expand All @@ -19,29 +20,24 @@ def perform_on_fail(delivery_info, _metadata, _payload, _exception)
end

def call
begin
queue.subscribe(block: true, manual_ack: true) do |delivery_info, metadata, payload|
begin
trace_time "Message #{metadata.message_id} processed in" do
perform(delivery_info, metadata, payload)
delivery_info.channel.ack(delivery_info.delivery_tag)
end
rescue StandardError => e
trace_time "Message #{metadata.message_id} failed with #{e.message}" do
perform_on_fail(delivery_info, metadata, payload, e)
end
end
queue.subscribe(block: true, manual_ack: true) do |delivery_info, metadata, payload|
trace_time "Message #{metadata.message_id} processed in" do
perform(delivery_info, metadata, payload)
delivery_info.channel.ack(delivery_info.delivery_tag)
end
rescue StandardError => e
trace_time "Message #{metadata.message_id} failed with #{e.message}" do
perform_on_fail(delivery_info, metadata, payload, e)
end
rescue Exception => e
serve_exception(e)
raise e
end
rescue Exception => e
serve_exception(e)
raise e
end

# Tihs is used to capture exceptions
def serve_exception(_exception); end


def multiple
false
end
Expand Down
6 changes: 3 additions & 3 deletions lib/bunny_messenger/exchange_by_name.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ class << self
def call(name, channel = nil)
return known_exchanges[name.to_s] if known_exchanges[name.to_s]

ex_dat = structure.dig(:exchanges)
.find { |x_hash| x_hash['name'] == name }
ex_dat = structure[:exchanges]
.find { |x_hash| x_hash['name'] == name }
raise "Exchange not found with name #{name} in schema" unless ex_dat

new_exchange = Bunny::Exchange.new(
Expand All @@ -29,7 +29,7 @@ def known_exchanges
end

def ex_channel
@ex_channel = BunnyMessenger::Connection.instance.create_channel
@ex_channel ||= BunnyMessenger::Connection.instance.create_channel
end

def structure
Expand Down
12 changes: 6 additions & 6 deletions lib/bunny_messenger/migration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ class Migration
def call
start_time = Time.now
log_info("#{version} Migration started #{self.class.name}")
up && BunnyMessenger::Migrator.save
up && ::BunnyMessenger::Migrator.save
duration = Time.now - start_time
log_info("Migration completed #{self.class.name} in #{duration} seconds")
end
Expand All @@ -24,23 +24,23 @@ def version
private

def channel
@channel ||= BunnyMessenger::Connection.instance.create_channel
@channel ||= ::BunnyMessenger::Connection.instance.create_channel
end

def delete_exchange(name)
BunnyMessenger::ExchangeByName.call(name).delete
::BunnyMessenger::ExchangeByName.call(name).delete
end

def delete_queue(name)
BunnyMessenger::QueueByName.call(name).delete
::BunnyMessenger::QueueByName.call(name).delete
end

def create_queue(name, opts = {})
Bunny::Queue.new(channel, name.to_s, opts)
::Bunny::Queue.new(channel, name.to_s, opts)
end

def create_exchange(name, type, opts = {})
Bunny::Exchange.new(channel, type, name.to_s, opts)
::Bunny::Exchange.new(channel, type, name.to_s, opts)
end

def create_binding(target, source, opts = {})
Expand Down
Loading