@@ -6,6 +6,7 @@ namespace NServiceBus.AcceptanceTests.Outbox;
6
6
using AcceptanceTesting . Customization ;
7
7
using AcceptanceTests ;
8
8
using EndpointTemplates ;
9
+ using Features ;
9
10
using NUnit . Framework ;
10
11
11
12
public class When_subscribers_handles_the_same_event : NServiceBusAcceptanceTest
@@ -19,8 +20,32 @@ public async Task Should_be_processed_by_all_subscribers()
19
20
. WithEndpoint < Publisher > ( b =>
20
21
b . When ( c => c . Subscriber1Subscribed && c . Subscriber2Subscribed , session => session . Publish ( new MyEvent ( ) ) )
21
22
)
22
- . WithEndpoint < Subscriber1 > ( )
23
- . WithEndpoint < Subscriber2 > ( )
23
+ . WithEndpoint < Subscriber1 > ( b => b . When ( async ( session , ctx ) =>
24
+ {
25
+ await session . Subscribe < MyEvent > ( ) ;
26
+ if ( ctx . HasNativePubSubSupport )
27
+ {
28
+ ctx . Subscriber1Subscribed = true ;
29
+ ctx . AddTrace ( "Subscriber1 is now subscribed (at least we have asked the broker to be subscribed)" ) ;
30
+ }
31
+ else
32
+ {
33
+ ctx . AddTrace ( "Subscriber1 has now asked to be subscribed to MyEvent" ) ;
34
+ }
35
+ } ) )
36
+ . WithEndpoint < Subscriber2 > ( b => b . When ( async ( session , ctx ) =>
37
+ {
38
+ await session . Subscribe < MyEvent > ( ) ;
39
+ if ( ctx . HasNativePubSubSupport )
40
+ {
41
+ ctx . Subscriber2Subscribed = true ;
42
+ ctx . AddTrace ( "Subscriber2 is now subscribed (at least we have asked the broker to be subscribed)" ) ;
43
+ }
44
+ else
45
+ {
46
+ ctx . AddTrace ( "Subscriber2 has now asked to be subscribed to MyEvent" ) ;
47
+ }
48
+ } ) )
24
49
. Done ( c => c . Subscriber1GotTheEvent && c . Subscriber2GotTheEvent )
25
50
. Run ( TimeSpan . FromSeconds ( 10 ) ) ;
26
51
@@ -50,12 +75,14 @@ public Publisher() => EndpointSetup<DefaultPublisher>(c =>
50
75
if ( s . SubscriberEndpoint . Contains ( subscriber1 ) )
51
76
{
52
77
context . Subscriber1Subscribed = true ;
78
+ context . AddTrace ( $ "{ subscriber1 } is now subscribed") ;
53
79
}
54
80
55
81
var subscriber2 = Conventions . EndpointNamingConvention ( typeof ( Subscriber2 ) ) ;
56
82
if ( s . SubscriberEndpoint . Contains ( subscriber2 ) )
57
83
{
58
84
context . Subscriber2Subscribed = true ;
85
+ context . AddTrace ( $ "{ subscriber2 } is now subscribed") ;
59
86
}
60
87
} ) ;
61
88
} , metadata => metadata . RegisterSelfAsPublisherFor < MyEvent > ( this ) ) ;
@@ -66,6 +93,8 @@ public class Subscriber1 : EndpointConfigurationBuilder
66
93
public Subscriber1 ( ) =>
67
94
EndpointSetup < DefaultServer > ( c =>
68
95
{
96
+ c . DisableFeature < AutoSubscribe > ( ) ;
97
+
69
98
c . ConfigureTransport ( ) . TransportTransactionMode = TransportTransactionMode . ReceiveOnly ;
70
99
c . EnableOutbox ( ) ;
71
100
} , metadata => metadata . RegisterPublisherFor < MyEvent > ( typeof ( Publisher ) ) ) ;
@@ -85,6 +114,8 @@ public class Subscriber2 : EndpointConfigurationBuilder
85
114
public Subscriber2 ( ) =>
86
115
EndpointSetup < DefaultServer > ( c =>
87
116
{
117
+ c . DisableFeature < AutoSubscribe > ( ) ;
118
+
88
119
c . ConfigureTransport ( ) . TransportTransactionMode = TransportTransactionMode . ReceiveOnly ;
89
120
c . EnableOutbox ( ) ;
90
121
} , metadata => metadata . RegisterPublisherFor < MyEvent > ( typeof ( Publisher ) ) ) ;
0 commit comments