Skip to content

Commit cbbb7d9

Browse files
committed
Merge branch 'hotfix-2.1.1'
2 parents 045b6af + 2dbed77 commit cbbb7d9

File tree

3 files changed

+92
-3
lines changed

3 files changed

+92
-3
lines changed

src/NServiceBus.RabbitMQ.AcceptanceTests/NServiceBus.RabbitMQ.AcceptanceTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@
210210
<Compile Include="App_Packages\NSB.AcceptanceTests.5.1.3\Versioning\When_multiple_versions_of_a_message_is_published.cs" />
211211
<Compile Include="App_Packages\NSB.AcceptanceTests.5.1.3\Volatile\When_sending_to_non_durable_endpoint.cs" />
212212
<Compile Include="When_using_direct_routing.cs" />
213+
<Compile Include="When_the_broker_connection_is_lost.cs" />
213214
<Compile Include="When_using_a_custom_message_id_strategy.cs" />
214215
<Compile Include="When_callback_receiver_is_disabled.cs" />
215216
<Compile Include="When_scaling_out_senders_that_uses_callbacks.cs" />
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
namespace NServiceBus.RabbitMQ.AcceptanceTests
2+
{
3+
using System;
4+
using NServiceBus.AcceptanceTesting;
5+
using NServiceBus.AcceptanceTests.EndpointTemplates;
6+
using NServiceBus.Transports.RabbitMQ;
7+
using NUnit.Framework;
8+
9+
public class When_the_broker_connection_is_lost
10+
{
11+
[Test]
12+
public void Should_reconnect()
13+
{
14+
var context = new Context
15+
{
16+
MessageId = Guid.NewGuid().ToString()
17+
};
18+
19+
Scenario.Define(context)
20+
.WithEndpoint<Receiver>()
21+
.Done(c => context.GotTheMessage)
22+
.AllowExceptions()
23+
.Run();
24+
25+
Assert.True(context.GotTheMessage, "Should receive the message");
26+
}
27+
28+
29+
public class Receiver : EndpointConfigurationBuilder
30+
{
31+
public Receiver()
32+
{
33+
EndpointSetup<DefaultServer>();
34+
}
35+
36+
class ConnectionKiller:IWantToRunWhenBusStartsAndStops
37+
{
38+
readonly IManageRabbitMqConnections connectionManager;
39+
readonly IBus bus;
40+
readonly Context context;
41+
42+
public ConnectionKiller(IManageRabbitMqConnections connectionManager,IBus bus,Context context)
43+
{
44+
this.connectionManager = connectionManager;
45+
this.bus = bus;
46+
this.context = context;
47+
}
48+
49+
public void Start()
50+
{
51+
connectionManager.GetConsumeConnection().Abort();
52+
bus.SendLocal(new MyRequest
53+
{
54+
MessageId = context.MessageId
55+
});
56+
}
57+
58+
public void Stop()
59+
{
60+
}
61+
}
62+
63+
class MyHandler : IHandleMessages<MyRequest>
64+
{
65+
public Context Context { get; set; }
66+
67+
public void Handle(MyRequest message)
68+
{
69+
if (message.MessageId == Context.MessageId)
70+
{
71+
Context.GotTheMessage = true;
72+
}
73+
}
74+
}
75+
}
76+
77+
class MyRequest : IMessage
78+
{
79+
public string MessageId { get; set; }
80+
}
81+
82+
class Context : ScenarioContext
83+
{
84+
public bool GotTheMessage { get; set; }
85+
public string MessageId { get; set; }
86+
}
87+
}
88+
}

src/NServiceBus.RabbitMQ/Config/RabbitMqTransportFeature.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,15 +155,15 @@ static RepeatedFailuresOverTimeCircuitBreaker SetupCircuitBreaker(CriticalError
155155
{
156156

157157
var timeToWaitBeforeTriggering = TimeSpan.FromMinutes(2);
158-
var timeToWaitBeforeTriggeringOverride = ConfigurationManager.AppSettings["NServiceBus/RabbitMqDequeueStrategy/TimeToWaitBeforeTriggering"] ?? "00:02:00";
158+
var timeToWaitBeforeTriggeringOverride = ConfigurationManager.AppSettings["NServiceBus/RabbitMqDequeueStrategy/TimeToWaitBeforeTriggering"];
159159

160160
if (!string.IsNullOrEmpty(timeToWaitBeforeTriggeringOverride))
161161
{
162162
timeToWaitBeforeTriggering = TimeSpan.Parse(timeToWaitBeforeTriggeringOverride);
163163
}
164164

165165
var delayAfterFailure = TimeSpan.FromSeconds(5);
166-
var delayAfterFailureOverride = ConfigurationManager.AppSettings["NServiceBus/RabbitMqDequeueStrategy/DelayAfterFailure"] ?? "00:02:00";
166+
var delayAfterFailureOverride = ConfigurationManager.AppSettings["NServiceBus/RabbitMqDequeueStrategy/DelayAfterFailure"];
167167

168168
if (!string.IsNullOrEmpty(delayAfterFailureOverride))
169169
{
@@ -172,7 +172,7 @@ static RepeatedFailuresOverTimeCircuitBreaker SetupCircuitBreaker(CriticalError
172172

173173
return new RepeatedFailuresOverTimeCircuitBreaker("RabbitMqConnectivity",
174174
timeToWaitBeforeTriggering,
175-
ex => criticalError.Raise("Repeated failures when communicating with the RabbitMq broker",
175+
ex => criticalError.Raise("Repeated failures when communicating with the broker",
176176
ex), delayAfterFailure);
177177
}
178178

0 commit comments

Comments
 (0)