Skip to content

Commit b7a31b5

Browse files
committed
Add event listener, use proper dep in shutdown, tweak model
1 parent 3c986e3 commit b7a31b5

File tree

9 files changed

+56
-9
lines changed

9 files changed

+56
-9
lines changed

IntegrationEngine/Api/Controllers/CronTriggerController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public IHttpActionResult PutCronTrigger(string id, CronTrigger trigger)
4949
BadRequest(ModelState);
5050
Repository.Update(trigger);
5151
EngineScheduler.ScheduleJobWithCronTrigger(trigger);
52-
return StatusCode(HttpStatusCode.NoContent);
52+
return Ok(Repository.SelectById(trigger.Id));
5353
}
5454

5555
// POST api/CronTrigger

IntegrationEngine/Api/Controllers/SimpleTriggerController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public IHttpActionResult PutSimpleTrigger(string id, SimpleTrigger trigger)
5353
BadRequest(ModelState);
5454
Repository.Update(trigger);
5555
EngineScheduler.ScheduleJobWithSimpleTrigger(trigger);
56-
return StatusCode(HttpStatusCode.NoContent);
56+
return Ok(Repository.SelectById(trigger.Id));
5757
}
5858

5959
// POST api/SimpleTrigger

IntegrationEngine/EngineHostConfiguration.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,8 @@ public void SetupElasticClient()
165165

166166
public void Shutdown()
167167
{
168-
var scheduler = Container.Resolve<IScheduler>();
169-
scheduler.Shutdown();
168+
var engineScheduler = Container.Resolve<IEngineScheduler>();
169+
engineScheduler.Shutdown();
170170
}
171171
}
172172
}

IntegrationEngine/IntegrationEngine.csproj

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@
147147
<Compile Include="Configuration\NLogAdapterConfiguration.cs" />
148148
<Compile Include="Configuration\MessageQueueConfiguration.cs" />
149149
<Compile Include="Configuration\WebApiConfiguration.cs" />
150+
<Compile Include="Scheduler\TriggerListener.cs" />
150151
<Compile Include="Properties\AssemblyInfo.cs" />
151152
<Compile Include="MessageQueue\IMessageQueueClient.cs" />
152153
<Compile Include="MessageQueue\RabbitMQClient.cs" />
@@ -204,7 +205,5 @@
204205
</ItemGroup>
205206
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
206207
<ItemGroup />
207-
<ItemGroup>
208-
<Folder Include="DataAnnotations\" />
209-
</ItemGroup>
208+
<ItemGroup />
210209
</Project>

IntegrationEngine/Scheduler/CronTrigger.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public class CronTrigger : ICronTrigger, ICronTriggerReadOnly, IHasStateDescript
2424
[ElasticProperty(OptOut = true)]
2525
public string CronExpressionDescription { get { return ExpressionDescriptor.GetDescription(CronExpressionString); } }
2626
[ElasticProperty(OptOut = true)]
27-
public TimeZoneInfo TimeZoneInfo { get { return TimeZoneInfo.FindSystemTimeZoneById(TimeZoneId); } }
27+
public TimeZoneInfo TimeZoneInfo { get { return TimeZoneId.GetTimeZoneInfo(); } }
2828
[ElasticProperty(OptOut = true)]
2929
public string StateDescription { get { return StateId.GetStateDescription(); } }
3030
}

IntegrationEngine/Scheduler/EngineScheduler.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using IntegrationEngine.Model;
66
using Quartz;
77
using IntegrationEngine.MessageQueue;
8+
using Quartz.Impl.Matchers;
89

910
namespace IntegrationEngine.Scheduler
1011
{
@@ -15,13 +16,23 @@ public class EngineScheduler : IEngineScheduler
1516
public IMessageQueueClient MessageQueueClient { get; set; }
1617

1718
public EngineScheduler()
18-
{}
19+
{
20+
}
1921

2022
public void Start()
2123
{
24+
var triggerListener = new TriggerListener();
25+
var mgr = Scheduler.ListenerManager;
26+
mgr.AddTriggerListener(triggerListener, GroupMatcher<TriggerKey>.AnyGroup());
2227
Scheduler.Start();
2328
}
2429

30+
public void Shutdown()
31+
{
32+
// Scheduler.ListenerManager.RemoveTriggerListener();
33+
Scheduler.Shutdown();
34+
}
35+
2536
public Type GetRegisteredJobTypeByName(string jobTypeName)
2637
{
2738
var jobTypes = IntegrationJobTypes.Where(x => x.FullName == jobTypeName);
@@ -41,6 +52,7 @@ public IJobDetail JobDetailFactory(Type jobType)
4152
jobDetailsDataMap.Put("IntegrationJob", integrationJob);
4253
return JobBuilder.Create<IntegrationJobDispatcherJob>()
4354
.SetJobData(jobDetailsDataMap)
55+
.StoreDurably(true)
4456
.WithIdentity(jobType.Name, jobType.Namespace)
4557
.Build();
4658
}

IntegrationEngine/Scheduler/IEngineScheduler.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ public interface IEngineScheduler
1212
void ScheduleJobWithSimpleTrigger(SimpleTrigger triggerDefinition);
1313
bool IsJobTypeRegistered(string jobTypeName);
1414
Type GetRegisteredJobTypeByName(string jobTypeName);
15+
void Shutdown();
1516
}
1617
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using Quartz;
2+
3+
namespace IntegrationEngine.Scheduler
4+
{
5+
public class TriggerListener : ITriggerListener
6+
{
7+
public string Name { get { return this.GetType().FullName;} }
8+
9+
public void TriggerComplete(ITrigger trigger, IJobExecutionContext context, SchedulerInstruction triggerInstructionCode)
10+
{
11+
}
12+
13+
public void TriggerFired(ITrigger trigger, IJobExecutionContext context)
14+
{
15+
16+
}
17+
18+
public void TriggerMisfired(ITrigger trigger)
19+
{
20+
21+
}
22+
23+
public bool VetoJobExecution(ITrigger trigger, IJobExecutionContext context)
24+
{
25+
return false;
26+
}
27+
}
28+
}

IntegrationEngine/Scheduler/TriggerPropertyExtension.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,12 @@ public static string GetStateDescription(this int value)
88
{
99
return ((Quartz.TriggerState)value).ToString();
1010
}
11+
12+
public static TimeZoneInfo GetTimeZoneInfo(this string value)
13+
{
14+
if (value == null)
15+
return TimeZoneInfo.Utc;
16+
return TimeZoneInfo.FindSystemTimeZoneById(value);
17+
}
1118
}
1219
}

0 commit comments

Comments
 (0)