@@ -38,28 +38,17 @@ public void Configure(IList<Assembly> assembliesWithJobs)
38
38
. Where ( x => typeof ( IIntegrationJob ) . IsAssignableFrom ( x ) && x . IsClass )
39
39
. ToList ( ) ;
40
40
LoadConfiguration ( ) ;
41
- SetupLogging ( ) ;
42
- TryAndLogFailure ( "Setup Database Repository" , SetupDatabaseRepository ) ;
43
- TryAndLogFailure ( "Setup Mail Client" , SetupMailClient ) ;
44
- TryAndLogFailure ( "Setup Elastic Client" , SetupElasticClientAndRepository ) ;
45
- TryAndLogFailure ( "Setup RScript Runner" , SetupRScriptRunner ) ;
46
- TryAndLogFailure ( "Setup Message Queue Client" , SetupMessageQueueClient ) ;
47
- TryAndLogFailure ( "Setup Scheduler" , SetupEngineScheduler ) ;
48
- TryAndLogFailure ( "Setup Web Api" , SetupWebApi ) ;
49
- TryAndLogFailure ( "Setup Message Queue Listener" , SetupMessageQueueListener ) ;
50
- }
51
-
52
- static void TryAndLogFailure ( string description , Action action )
53
- {
54
- try
55
- {
56
- action ( ) ;
57
- }
58
- catch ( Exception exception )
59
- {
60
- var log = Common . Logging . LogManager . GetLogger ( typeof ( EngineHost ) ) ;
61
- log . Error ( description , exception ) ;
62
- }
41
+ var log = SetupLogging ( ) ;
42
+ var dbContext = SetupDatabaseContext ( ) ;
43
+ SetupRScriptRunner ( ) ;
44
+ SetupDatabaseRepository ( dbContext ) ;
45
+ var mailClient = SetupMailClient ( log ) ;
46
+ var elasticClient = SetupElasticClient ( ) ;
47
+ var elasticsearchRepository = SetupElasticsearchRepository ( log , elasticClient ) ;
48
+ var messageQueueClient = SetupMessageQueueClient ( log ) ;
49
+ SetupEngineScheduler ( log , messageQueueClient , elasticsearchRepository ) ;
50
+ SetupMessageQueueListener ( log , mailClient , elasticClient , dbContext ) ;
51
+ SetupWebApi ( ) ;
63
52
}
64
53
65
54
public void LoadConfiguration ( )
@@ -68,7 +57,7 @@ public void LoadConfiguration()
68
57
Container . RegisterInstance < EngineConfiguration > ( Configuration ) ;
69
58
}
70
59
71
- public void SetupLogging ( )
60
+ public ILog SetupLogging ( )
72
61
{
73
62
var config = Configuration . NLogAdapter ;
74
63
var properties = new NameValueCollection ( ) ;
@@ -77,13 +66,19 @@ public void SetupLogging()
77
66
Common . Logging . LogManager . Adapter = new NLogLoggerFactoryAdapter ( properties ) ;
78
67
var log = LogManager . GetLogger ( MethodBase . GetCurrentMethod ( ) . DeclaringType ) ;
79
68
Container . RegisterInstance < ILog > ( log ) ;
69
+ return log ;
70
+ }
71
+
72
+ public IntegrationEngineContext SetupDatabaseContext ( )
73
+ {
74
+ var integrationEngineContext = new DatabaseInitializer ( Configuration . Database ) . GetDbContext ( ) ;
75
+ Container . RegisterInstance < IntegrationEngineContext > ( integrationEngineContext ) ;
76
+ return integrationEngineContext ;
80
77
}
81
78
82
- public void SetupDatabaseRepository ( )
79
+ public void SetupDatabaseRepository ( IntegrationEngineContext integrationEngineContext )
83
80
{
84
- var dbContext = new DatabaseInitializer ( Configuration . Database ) . GetDbContext ( ) ;
85
- Container . RegisterInstance < IntegrationEngineContext > ( dbContext ) ;
86
- Container . RegisterInstance < IDatabaseRepository > ( new DatabaseRepository ( dbContext ) ) ;
81
+ Container . RegisterInstance < IDatabaseRepository > ( new DatabaseRepository ( integrationEngineContext ) ) ;
87
82
}
88
83
89
84
public void SetupWebApi ( )
@@ -92,57 +87,54 @@ public void SetupWebApi()
92
87
IntegrationEngineApi . Start ( ( new UriBuilder ( "http" , config . HostName , config . Port ) ) . Uri . AbsoluteUri ) ;
93
88
}
94
89
95
- public void SetupMailClient ( )
90
+ public IMailClient SetupMailClient ( ILog log )
96
91
{
97
- var log = Container . Resolve < ILog > ( ) ;
98
-
99
92
var mailClient = new MailClient ( ) {
100
93
MailConfiguration = Configuration . Mail ,
101
94
Log = log ,
102
95
} ;
103
96
Container . RegisterInstance < IMailClient > ( mailClient ) ;
97
+ return mailClient ;
104
98
}
105
99
106
- public void SetupMessageQueueListener ( )
100
+ public void SetupMessageQueueListener ( ILog log , IMailClient mailClient , IElasticClient elasticClient , IntegrationEngineContext integrationEngineContext )
107
101
{
108
102
var rabbitMqListener = new RabbitMQListener ( ) {
109
103
IntegrationJobTypes = IntegrationJobTypes ,
110
104
MessageQueueConnection = new MessageQueueConnection ( Configuration . MessageQueue ) ,
111
105
MessageQueueConfiguration = Configuration . MessageQueue ,
112
- Log = Container . Resolve < ILog > ( ) ,
113
- MailClient = Container . Resolve < IMailClient > ( ) ,
114
- IntegrationEngineContext = Container . Resolve < IntegrationEngineContext > ( ) ,
115
- ElasticClient = Container . Resolve < IElasticClient > ( ) ,
106
+ Log = log ,
107
+ MailClient = mailClient ,
108
+ IntegrationEngineContext = integrationEngineContext ,
109
+ ElasticClient = elasticClient ,
116
110
} ;
117
111
Container . RegisterInstance < IMessageQueueListener > ( rabbitMqListener ) ;
118
112
rabbitMqListener . Listen ( ) ;
119
113
}
120
114
121
- public void SetupMessageQueueClient ( )
115
+ public IMessageQueueClient SetupMessageQueueClient ( ILog log )
122
116
{
123
117
var messageQueueClient = new RabbitMQClient ( ) {
124
118
MessageQueueConnection = new MessageQueueConnection ( Configuration . MessageQueue ) ,
125
119
MessageQueueConfiguration = Configuration . MessageQueue ,
126
- Log = Container . Resolve < ILog > ( ) ,
120
+ Log = log ,
127
121
} ;
128
122
Container . RegisterInstance < IMessageQueueClient > ( messageQueueClient ) ;
123
+ return messageQueueClient ;
129
124
}
130
125
131
- public void SetupEngineScheduler ( )
126
+ public void SetupEngineScheduler ( ILog log , IMessageQueueClient messageQueueClient , IElasticsearchRepository elasticsearchRepository )
132
127
{
133
- var log = Container . Resolve < ILog > ( ) ;
134
128
var engineScheduler = new EngineScheduler ( ) {
135
129
Scheduler = StdSchedulerFactory . GetDefaultScheduler ( ) ,
136
130
IntegrationJobTypes = IntegrationJobTypes ,
137
- MessageQueueClient = Container . Resolve < IMessageQueueClient > ( ) ,
131
+ MessageQueueClient = messageQueueClient ,
138
132
Log = log ,
139
133
} ;
140
134
Container . RegisterInstance < IEngineScheduler > ( engineScheduler ) ;
141
135
engineScheduler . Start ( ) ;
142
-
143
- var elasticRepo = Container . Resolve < IElasticsearchRepository > ( ) ;
144
- var simpleTriggers = elasticRepo . SelectAll < SimpleTrigger > ( ) ;
145
- var allCronTriggers = elasticRepo . SelectAll < CronTrigger > ( ) ;
136
+ var simpleTriggers = elasticsearchRepository . SelectAll < SimpleTrigger > ( ) ;
137
+ var allCronTriggers = elasticsearchRepository . SelectAll < CronTrigger > ( ) ;
146
138
var cronTriggers = allCronTriggers . Where ( x => ! string . IsNullOrWhiteSpace ( x . CronExpressionString ) ) ;
147
139
foreach ( var trigger in simpleTriggers )
148
140
engineScheduler . ScheduleJobWithTrigger ( trigger ) ;
@@ -157,21 +149,26 @@ public void SetupRScriptRunner()
157
149
Container . RegisterInstance < RScriptRunner > ( new RScriptRunner ( ) ) ;
158
150
}
159
151
160
- public void SetupElasticClientAndRepository ( )
152
+ public IElasticClient SetupElasticClient ( )
161
153
{
162
154
var config = Configuration . Elasticsearch ;
163
155
var serverUri = new UriBuilder ( config . Protocol , config . HostName , config . Port ) . Uri ;
164
156
var settings = new ConnectionSettings ( serverUri , config . DefaultIndex ) ;
165
157
var elasticClient = new ElasticClient ( settings ) ;
166
- var log = Container . Resolve < ILog > ( ) ;
167
158
Container . RegisterInstance < IElasticClient > ( elasticClient ) ;
168
- var elasticRepo = new ElasticsearchRepository ( ) {
169
- ElasticClient = elasticClient ,
159
+ return elasticClient ;
160
+ }
161
+
162
+ public IElasticsearchRepository SetupElasticsearchRepository ( ILog log , IElasticClient elasticClient )
163
+ {
164
+ var elasticsearchRepository = new ElasticsearchRepository ( ) {
170
165
Log = log ,
166
+ ElasticClient = elasticClient ,
171
167
} ;
172
- if ( ! elasticRepo . IsServerAvailable ( ) )
168
+ if ( ! elasticsearchRepository . IsServerAvailable ( ) )
173
169
log . Warn ( "Elasticsearch server does not appear to be available." ) ;
174
- Container . RegisterInstance < IElasticsearchRepository > ( elasticRepo ) ;
170
+ Container . RegisterInstance < IElasticsearchRepository > ( elasticsearchRepository ) ;
171
+ return elasticsearchRepository ;
175
172
}
176
173
177
174
public void Dispose ( )
0 commit comments