fluent-plugin-amqp 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ac0659509393a3cbe0f5a86a2925e8227e705f23
4
- data.tar.gz: 86ab5e6981907aceec58b4a76abab2b1a483341d
3
+ metadata.gz: e2faee36d9db937fb190935e620e3b39a3dc226d
4
+ data.tar.gz: 5070a58c8427cb20c1a100105573036fc0d8688f
5
5
  SHA512:
6
- metadata.gz: 3843d792b1904cffe3846ba20a73838774ab32e9a76254317d728aeb06277bea205fcd530b05d61ba9c620880ab8405d856fc2f15ea40b2a611361cc32025c17
7
- data.tar.gz: da272abdad7b8ed575cf617c55cc5076e9d52edc2602385461dee42eedeb275ccde7a037b376b204b48af41eb1ba00db82cc97d3a61b149139770c33e71daea4
6
+ metadata.gz: d07705f1da8b0618ca41029c5a01a1b453ced2347a829b4e544581d0fb5878f7c383f323911c2be4e30519678faf254123b06073d9b8c7b90e85b7d8a0a962c8
7
+ data.tar.gz: 2927771afd59c19287d934f5b560845afb57bc705c4799668f581b81ec6d25d907d5b4c6d3f1377dcfb64fb12f12e4fcc522df5005d79bd3e23fe6e39a0dcac7
@@ -1,6 +1,9 @@
1
1
  require 'time'
2
2
 
3
3
  module Fluent
4
+ ##
5
+ # AMQPInput to be used as a Fluent SOURCE, reading messages from a RabbitMQ
6
+ # message broker
4
7
  class AMQPInput < Input
5
8
  Fluent::Plugin.register_input('amqp', self)
6
9
 
@@ -37,6 +40,11 @@ module Fluent
37
40
  config_param :tls_key, :string, :default => nil
38
41
  config_param :tls_ca_certificates, :array, :default => nil
39
42
  config_param :tls_verify_peer, :bool, :default => true
43
+ config_param :bind_exchange, :bool, :default => false
44
+ config_param :exchange, :string, :default => ""
45
+ config_param :routing_key, :string, :default => "#" # The routing key used to bind queue to exchange - # = matches all, * matches section (tag.*.info)
46
+
47
+
40
48
 
41
49
  def initialize
42
50
  require 'bunny'
@@ -59,33 +67,34 @@ module Fluent
59
67
  raise ConfigError, "'host' and 'queue' must be all specified."
60
68
  end
61
69
  check_tls_configuration
62
-
63
70
  end
64
71
 
65
72
  def start
66
73
  super
67
- @thread = Thread.new(&method(:run))
68
- end
69
-
70
- def shutdown
71
- @connection.stop
72
- @thread.join
73
- super
74
- end
75
-
76
- def run
77
74
  # Create a new connection, unless its already been provided to us
78
75
  @connection = Bunny.new get_connection_options unless @connection
79
76
  @connection.start
80
77
  @channel = @connection.create_channel
81
78
  q = @channel.queue(@queue, :passive => @passive, :durable => @durable,
82
79
  :exclusive => @exclusive, :auto_delete => @auto_delete)
80
+ if @bind_exchange
81
+ log.info "Binding #{@queue} to #{@exchange}, :routing_key => #{@routing_key}"
82
+ q.bind(exchange=@exchange, :routing_key => @routing_key)
83
+ end
84
+
83
85
  q.subscribe do |delivery, meta, msg|
86
+ log.debug "Recieved message #{@msg}"
84
87
  payload = parse_payload(msg)
85
88
  router.emit(parse_tag(delivery, meta), parse_time(meta), payload)
86
89
  end
87
90
  end # AMQPInput#run
88
91
 
92
+ def shutdown
93
+ log.info "Closing connection"
94
+ @connection.stop
95
+ super
96
+ end
97
+
89
98
  private
90
99
  def parse_payload(msg)
91
100
  if @parser
@@ -1,5 +1,8 @@
1
1
  require 'json'
2
2
  module Fluent
3
+ ##
4
+ # AMQPOutput to be used as a Fluent MATCHER, sending messages to a RabbitMQ
5
+ # messaging broker
3
6
  class AMQPOutput < BufferedOutput
4
7
  Plugin.register_output("amqp", self)
5
8
 
@@ -48,9 +51,17 @@ module Fluent
48
51
 
49
52
  def start
50
53
  super
51
- @connection = Bunny.new(get_connection_options) unless @connection
54
+ begin
55
+ log.info "Connecting to RabbitMQ..."
56
+ @connection = Bunny.new(get_connection_options) unless @connection
57
+ @connection.start
58
+ rescue Bunny::TCPConnectionFailed => e
59
+ log.error "Connection to #{@host} failed"
60
+ rescue Bunny::PossibleAuthenticationFailureError => e
61
+ log.error "Could not authenticate as #{@user}"
62
+ end
52
63
 
53
- @connection.start
64
+ log.info "Creating new exchange #{@exchange}"
54
65
  @channel = @connection.create_channel
55
66
  @exch = @channel.exchange(@exchange, :type => @exchange_type.intern,
56
67
  :passive => @passive, :durable => @durable,
@@ -69,6 +80,7 @@ module Fluent
69
80
  def write(chunk)
70
81
  chunk.msgpack_each do |(tag, time, data)|
71
82
  data = JSON.dump( data ) unless data.is_a?( String )
83
+ log.debug "Sending message #{data}, :key => #{routing_key( tag)} :headers => #{headers(tag,time)}"
72
84
  @exch.publish(data, :key => routing_key( tag ), :persistent => @persistent, :headers => headers( tag, time ))
73
85
  end
74
86
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-amqp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiromi Ishii
@@ -32,14 +32,14 @@ dependencies:
32
32
  requirements:
33
33
  - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: 2.2.0
35
+ version: '2.2'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: 2.2.0
42
+ version: '2.2'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: shoulda
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -154,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
154
  version: '0'
155
155
  requirements: []
156
156
  rubyforge_project:
157
- rubygems_version: 2.5.1
157
+ rubygems_version: 2.4.8
158
158
  signing_key:
159
159
  specification_version: 4
160
160
  summary: AMQP input/output plugin or fluentd