@@ -26,74 +26,71 @@ public EventConsumer(IPersistenceProvider persistenceStore, IQueueProvider queue
26
26
27
27
protected override async Task ProcessItem ( string itemId , CancellationToken cancellationToken )
28
28
{
29
- if ( await _lockProvider . AcquireLock ( $ "evt:{ itemId } ", cancellationToken ) )
29
+ if ( ! await _lockProvider . AcquireLock ( $ "evt:{ itemId } ", cancellationToken ) )
30
30
{
31
- try
31
+ Logger . LogInformation ( $ "Event locked { itemId } ") ;
32
+ return ;
33
+ }
34
+
35
+ try
36
+ {
37
+ cancellationToken . ThrowIfCancellationRequested ( ) ;
38
+ var evt = await _persistenceStore . GetEvent ( itemId ) ;
39
+ if ( evt . EventTime <= _datetimeProvider . Now . ToUniversalTime ( ) )
32
40
{
33
- cancellationToken . ThrowIfCancellationRequested ( ) ;
34
- var evt = await _persistenceStore . GetEvent ( itemId ) ;
35
- if ( evt . EventTime <= _datetimeProvider . Now . ToUniversalTime ( ) )
36
- {
37
- var subs = await _persistenceStore . GetSubcriptions ( evt . EventName , evt . EventKey , evt . EventTime ) ;
38
- var success = true ;
41
+ var subs = await _persistenceStore . GetSubcriptions ( evt . EventName , evt . EventKey , evt . EventTime ) ;
42
+ var success = true ;
39
43
40
- foreach ( var sub in subs . ToList ( ) )
41
- {
42
- success = success && await SeedSubscription ( evt , sub , cancellationToken ) ;
43
- }
44
+ foreach ( var sub in subs . ToList ( ) )
45
+ {
46
+ success = success && await SeedSubscription ( evt , sub , cancellationToken ) ;
47
+ }
44
48
45
- if ( success )
46
- {
47
- await _persistenceStore . MarkEventProcessed ( itemId ) ;
48
- }
49
+ if ( success )
50
+ {
51
+ await _persistenceStore . MarkEventProcessed ( itemId ) ;
49
52
}
50
53
}
51
- finally
52
- {
53
- await _lockProvider . ReleaseLock ( $ "evt:{ itemId } ") ;
54
- }
55
54
}
56
- else
55
+ finally
57
56
{
58
- Logger . LogInformation ( $ "Event locked { itemId } ") ;
57
+ await _lockProvider . ReleaseLock ( $ "evt: { itemId } ") ;
59
58
}
60
59
}
61
60
62
61
private async Task < bool > SeedSubscription ( Event evt , EventSubscription sub , CancellationToken cancellationToken )
63
62
{
64
- if ( await _lockProvider . AcquireLock ( sub . WorkflowId , cancellationToken ) )
63
+ if ( ! await _lockProvider . AcquireLock ( sub . WorkflowId , cancellationToken ) )
65
64
{
66
- try
67
- {
68
- var workflow = await _persistenceStore . GetWorkflowInstance ( sub . WorkflowId ) ;
69
- var pointers = workflow . ExecutionPointers . Where ( p => p . EventName == sub . EventName && p . EventKey == sub . EventKey && ! p . EventPublished && p . EndTime == null ) ;
70
- foreach ( var p in pointers )
71
- {
72
- p . EventData = evt . EventData ;
73
- p . EventPublished = true ;
74
- p . Active = true ;
75
- }
76
- workflow . NextExecution = 0 ;
77
- await _persistenceStore . PersistWorkflow ( workflow ) ;
78
- await _persistenceStore . TerminateSubscription ( sub . Id ) ;
79
- return true ;
80
- }
81
- catch ( Exception ex )
82
- {
83
- Logger . LogError ( ex . Message ) ;
84
- return false ;
85
- }
86
- finally
65
+ Logger . LogInformation ( "Workflow locked {0}" , sub . WorkflowId ) ;
66
+ return false ;
67
+ }
68
+
69
+ try
70
+ {
71
+ var workflow = await _persistenceStore . GetWorkflowInstance ( sub . WorkflowId ) ;
72
+ var pointers = workflow . ExecutionPointers . Where ( p => p . EventName == sub . EventName && p . EventKey == sub . EventKey && ! p . EventPublished && p . EndTime == null ) ;
73
+ foreach ( var p in pointers )
87
74
{
88
- await _lockProvider . ReleaseLock ( sub . WorkflowId ) ;
89
- await QueueProvider . QueueWork ( sub . WorkflowId , QueueType . Workflow ) ;
75
+ p . EventData = evt . EventData ;
76
+ p . EventPublished = true ;
77
+ p . Active = true ;
90
78
}
79
+ workflow . NextExecution = 0 ;
80
+ await _persistenceStore . PersistWorkflow ( workflow ) ;
81
+ await _persistenceStore . TerminateSubscription ( sub . Id ) ;
82
+ return true ;
91
83
}
92
- else
84
+ catch ( Exception ex )
93
85
{
94
- Logger . LogInformation ( "Workflow locked {0}" , sub . WorkflowId ) ;
86
+ Logger . LogError ( ex . Message ) ;
95
87
return false ;
96
88
}
89
+ finally
90
+ {
91
+ await _lockProvider . ReleaseLock ( sub . WorkflowId ) ;
92
+ await QueueProvider . QueueWork ( sub . WorkflowId , QueueType . Workflow ) ;
93
+ }
97
94
}
98
95
}
99
96
}
0 commit comments