lenz_base 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/lenz_base.rb +67 -10
- metadata +18 -2
data/lib/lenz_base.rb
CHANGED
@@ -4,13 +4,16 @@ require 'json'
|
|
4
4
|
require 'bunny'
|
5
5
|
require 'mysql2'
|
6
6
|
require 'logger'
|
7
|
+
require 'cassandra'
|
7
8
|
|
8
9
|
class LenzBase
|
9
|
-
def initialize()
|
10
|
+
def initialize(show_query = false)
|
10
11
|
initLogger
|
11
12
|
@sql_clients = {}
|
13
|
+
@cql_clients = {}
|
12
14
|
@mq_sessions = {}
|
13
15
|
@mq_channels = {}
|
16
|
+
@show_query = show_query
|
14
17
|
end
|
15
18
|
|
16
19
|
def initLogger
|
@@ -27,24 +30,24 @@ class LenzBase
|
|
27
30
|
Kernel.sleep(duration)
|
28
31
|
end
|
29
32
|
|
30
|
-
def
|
33
|
+
def getSqlClient(db_info)
|
31
34
|
if(!@sql_clients[db_info])
|
32
|
-
@sql_clients[db_info] =
|
35
|
+
@sql_clients[db_info] = createSqlClient(db_info)
|
33
36
|
end
|
34
37
|
return @sql_clients[db_info]
|
35
38
|
end
|
36
39
|
|
37
|
-
def
|
40
|
+
def removeSqlClient(db_info)
|
38
41
|
if(@sql_clients[db_info])
|
39
42
|
@sql_clients[db_info].close
|
40
43
|
end
|
41
44
|
@sql_clients[db_info] = nil
|
42
45
|
end
|
43
46
|
|
44
|
-
def
|
47
|
+
def createSqlClient(db_info)
|
45
48
|
begin
|
46
49
|
client = Mysql2::Client.new(db_info)
|
47
|
-
log("
|
50
|
+
log("MySql connected #{db_info}")
|
48
51
|
return client
|
49
52
|
rescue Exception => e
|
50
53
|
log e
|
@@ -55,12 +58,53 @@ class LenzBase
|
|
55
58
|
|
56
59
|
def querySql(db_info, query)
|
57
60
|
begin
|
58
|
-
result =
|
59
|
-
log("query launched for #{db_info}")
|
61
|
+
result = getSqlClient(db_info).query(query)
|
62
|
+
log("SQL query launched for #{db_info}")
|
63
|
+
log(query) if @show_query
|
60
64
|
return result ? result.entries : nil
|
61
65
|
rescue Exception => e
|
62
66
|
log e
|
63
|
-
|
67
|
+
removeSqlClient(db_info)
|
68
|
+
sleep(5)
|
69
|
+
retry
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def getCqlClient(db_info)
|
74
|
+
if(!@cql_clients[db_info])
|
75
|
+
@cql_clients[db_info] = createCqlClient(db_info)
|
76
|
+
end
|
77
|
+
return @cql_clients[db_info]
|
78
|
+
end
|
79
|
+
|
80
|
+
def removeCqlClient(db_info)
|
81
|
+
if(@cql_clients[db_info])
|
82
|
+
@cql_clients[db_info].close
|
83
|
+
end
|
84
|
+
@cql_clients[db_info] = nil
|
85
|
+
end
|
86
|
+
|
87
|
+
def createCqlClient(db_info)
|
88
|
+
begin
|
89
|
+
client = Cassandra.cluster(db_info).connect(db_info['key_space'])
|
90
|
+
log("Cassandra connected #{db_info}")
|
91
|
+
return client
|
92
|
+
rescue Exception => e
|
93
|
+
log e
|
94
|
+
sleep(5)
|
95
|
+
retry
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
def queryCql(db_info, query)
|
100
|
+
begin
|
101
|
+
result = getCqlClient(db_info).execute(query)
|
102
|
+
log("CQL query launched for #{db_info}")
|
103
|
+
log(query) if @show_query
|
104
|
+
return result
|
105
|
+
rescue Exception => e
|
106
|
+
log e
|
107
|
+
removeCqlClient(db_info)
|
64
108
|
sleep(5)
|
65
109
|
retry
|
66
110
|
end
|
@@ -97,7 +141,7 @@ class LenzBase
|
|
97
141
|
begin
|
98
142
|
ch = getMQChannel(mq_info)
|
99
143
|
q = ch.queue(mq_info[:name], mq_info[:options] == nil ? {} : mq_info[:options])
|
100
|
-
q.publish(message, args)
|
144
|
+
q.publish(toJson(message), args)
|
101
145
|
log("message published to #{mq_info}")
|
102
146
|
rescue Exception => e
|
103
147
|
log e
|
@@ -131,6 +175,14 @@ class LenzBase
|
|
131
175
|
end
|
132
176
|
end
|
133
177
|
|
178
|
+
def toJson(val)
|
179
|
+
if(val.respond_to? :to_json)
|
180
|
+
return val.to_json
|
181
|
+
else
|
182
|
+
return val.to_s
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
134
186
|
def processMQMessage(mq_info, delivery_info, properties, body)
|
135
187
|
end
|
136
188
|
|
@@ -149,5 +201,10 @@ class LenzBase
|
|
149
201
|
log("close connection on #{db_info}")
|
150
202
|
client.close
|
151
203
|
end
|
204
|
+
|
205
|
+
@cql_clients.each do |db_info, client|
|
206
|
+
log("close connection on #{db_info}")
|
207
|
+
client.close
|
208
|
+
end
|
152
209
|
end
|
153
210
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lenz_base
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-11-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -75,6 +75,22 @@ dependencies:
|
|
75
75
|
- - ! '>='
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: 1.2.8
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: cassandra-driver
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 1.0.0.rc
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.0.0.rc
|
78
94
|
description: Lenz base
|
79
95
|
email: heoseok87@leevi.co.kr
|
80
96
|
executables: []
|