Skip to content

Commit 486eb27

Browse files
author
shlomii
committed
Merge branch '3.2.6'
2 parents 51cb6fe + 8a3b894 commit 486eb27

File tree

5 files changed

+54
-6
lines changed

5 files changed

+54
-6
lines changed

default.ps1

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
properties {
22
$ProductVersion = "3.2"
33
$BuildNumber = "0";
4-
$PatchVersion = "5"
4+
$PatchVersion = "6"
55
$PreRelease = "-build"
66
$PackageNameSuffix = ""
77
$TargetFramework = "net-4.0"
@@ -770,7 +770,7 @@ task CreatePackages -depends PrepareRelease -description "After preparing for R
770770
#region Packing NServiceBus.NHibernate
771771
$packageNameNHibernate = "NServiceBus.NHibernate" + $PackageNameSuffix
772772
$packit.package_description = "The NHibernate for the NServicebus"
773-
invoke-packit $packageNameNHibernate $script:packageVersion @{"Iesi.Collections"="3.2.0.4000";"NHibernate"="3.2.0.4000"} "binaries\NServiceBus.NHibernate.dll"
773+
invoke-packit $packageNameNHibernate $script:packageVersion @{"NHibernate"="3.3.0.4000"} "binaries\NServiceBus.NHibernate.dll"
774774
#endregion
775775

776776
#region Packing NServiceBus.Azure

src/management/retries/NServiceBus.Management.Retries.Tests/SecondLevelRetriesTests.cs

+28
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,34 @@ public void SetUp()
3434
_message = new TransportMessage {Headers = new Dictionary<string, string>()};
3535
}
3636

37+
[Test]
38+
public void Message_should_have_ReplyToAddress_set_to_original_sender_when_sent_to_real_errorq()
39+
{
40+
var expected = new Address("clientQ", "myMachine");
41+
_message.ReplyToAddress = expected;
42+
SecondLevelRetries.RetryPolicy = _ => TimeSpan.MinValue;
43+
44+
_satellite.Handle(_message);
45+
46+
Assert.AreEqual(expected, _message.ReplyToAddress);
47+
}
48+
49+
[Test]
50+
public void Message_should_have_ReplyToAddress_set_to_original_sender_when_sent_to_real_errorq_after_retries()
51+
{
52+
TransportMessageHelpers.SetHeader(_message, Faults.FaultsHeaderKeys.FailedQ, "reply@address");
53+
54+
var expected = new Address("clientQ", "myMachine");
55+
_message.ReplyToAddress = expected;
56+
57+
for (var i = 0; i < DefaultRetryPolicy.NumberOfRetries + 1; i++)
58+
{
59+
_satellite.Handle(_message);
60+
}
61+
62+
Assert.AreEqual(expected, _message.ReplyToAddress);
63+
}
64+
3765
[Test]
3866
public void Message_should_be_sent_to_real_errorQ_if_defer_timespan_is_less_than_zero()
3967
{

src/management/retries/NServiceBus.Management.Retries/Helpers/TransportMessageHelpers.cs

+14
Original file line numberDiff line numberDiff line change
@@ -58,5 +58,19 @@ public static int GetNumberOfRetries(TransportMessage message)
5858
}
5959
return 0;
6060
}
61+
62+
public static Address GetOriginalReplyToAddressAndRemoveItFromHeaders(TransportMessage message)
63+
{
64+
var originalReplyToAddress = GetHeader(message, SecondLevelRetriesHeaders.OriginalReplyToAddress);
65+
66+
if (originalReplyToAddress == null)
67+
{
68+
return message.ReplyToAddress;
69+
}
70+
71+
SetHeader(message, SecondLevelRetriesHeaders.OriginalReplyToAddress, null);
72+
73+
return Address.Parse(originalReplyToAddress);
74+
}
6175
}
6276
}

src/management/retries/NServiceBus.Management.Retries/SecondLevelRetries.cs

+9-4
Original file line numberDiff line numberDiff line change
@@ -56,17 +56,22 @@ void SendToErrorQueue(TransportMessage message)
5656
{
5757
Logger.InfoFormat("Send message to error queue, {0}", FaultManager.ErrorQueue);
5858

59-
message.ReplyToAddress = TransportMessageHelpers.GetReplyToAddress(message);
59+
message.ReplyToAddress = TransportMessageHelpers.GetOriginalReplyToAddressAndRemoveItFromHeaders(message);
6060
MessageSender.Send(message, FaultManager.ErrorQueue);
6161
}
6262

6363
void Defer(TimeSpan defer, TransportMessage message)
64-
{
65-
message.ReplyToAddress = TransportMessageHelpers.GetReplyToAddress(message);
66-
64+
{
6765
TransportMessageHelpers.SetHeader(message, Headers.Expire, (DateTime.UtcNow + defer).ToWireFormattedString());
6866
TransportMessageHelpers.SetHeader(message, SecondLevelRetriesHeaders.Retries, (TransportMessageHelpers.GetNumberOfRetries(message) + 1).ToString());
6967

68+
if (!TransportMessageHelpers.HeaderExists(message, SecondLevelRetriesHeaders.OriginalReplyToAddress) && message.ReplyToAddress != null)
69+
{
70+
TransportMessageHelpers.SetHeader(message, SecondLevelRetriesHeaders.OriginalReplyToAddress, message.ReplyToAddress.ToString());
71+
}
72+
73+
message.ReplyToAddress = TransportMessageHelpers.GetReplyToAddress(message);
74+
7075
if (!TransportMessageHelpers.HeaderExists(message, SecondLevelRetriesHeaders.RetriesTimestamp))
7176
{
7277
TransportMessageHelpers.SetHeader(message, SecondLevelRetriesHeaders.RetriesTimestamp, DateTime.UtcNow.ToWireFormattedString());

src/management/retries/NServiceBus.Management.Retries/SecondLevelRetriesHeaders.cs

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
{
33
public static class SecondLevelRetriesHeaders
44
{
5+
public const string OriginalReplyToAddress = "NServiceBus.Retries.OriginalReplyToAddress";
56
public const string Retries = "NServiceBus.Retries";
67
public const string RetriesTimestamp = "NServiceBus.Retries.Timestamp";
78
}

0 commit comments

Comments
 (0)