Skip to content

Commit 62678cb

Browse files
authored
Merge branch 'OpenTransitLab:develop' into develop
2 parents 35c820d + f999e58 commit 62678cb

9 files changed

Lines changed: 79 additions & 21 deletions

File tree

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: MassTransit
22
env:
3-
MASSTRANSIT_VERSION: 8.5.6
3+
MASSTRANSIT_VERSION: 8.5.8
44
on:
55
push:
66
paths:

Directory.Packages.props

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
44
</PropertyGroup>
55
<ItemGroup>
6-
<PackageVersion Include="Apache.NMS.ActiveMQ" Version="2.1.1" />
7-
<PackageVersion Include="Apache.NMS.AMQP" Version="2.2.0" />
6+
<PackageVersion Include="Apache.NMS.ActiveMQ" Version="2.2.0" />
7+
<PackageVersion Include="Apache.NMS.AMQP" Version="2.4.0" />
88
<PackageVersion Include="AWSSDK.DynamoDBv2" Version="4.0.6.3" />
99
<PackageVersion Include="AWSSDK.SimpleNotificationService" Version="4.0.1.3" />
1010
<PackageVersion Include="AWSSDK.S3" Version="4.0.7.4" />
@@ -58,48 +58,48 @@
5858
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="10.0.0" Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))"/>
5959
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0'))" />
6060
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0"
61-
Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
61+
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0')) AND !$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
6262
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="10.0.0"
6363
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
6464
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0'))" />
6565
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.0"
66-
Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
66+
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0')) AND !$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
6767
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.0"
6868
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
6969
<PackageVersion Include="Microsoft.Extensions.Diagnostics" Version="8.0.0" Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0'))" />
7070
<PackageVersion Include="Microsoft.Extensions.Diagnostics" Version="9.0.0"
71-
Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
71+
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0')) AND !$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
7272
<PackageVersion Include="Microsoft.Extensions.Diagnostics" Version="10.0.0"
7373
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
7474
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="8.0.0" Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0'))" />
7575
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="9.0.0"
76-
Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
76+
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0')) AND !$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
7777
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="10.0.0"
7878
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
7979
<PackageVersion Include="Microsoft.Extensions.Diagnostics.Testing" Version="9.0.0" />
8080
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="8.0.0" Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0'))" />
8181
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.0"
82-
Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
82+
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0')) AND !$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
8383
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="10.0.0"
8484
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
8585
<PackageVersion Include="Microsoft.Extensions.Http" Version="8.0.0" Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0'))" />
8686
<PackageVersion Include="Microsoft.Extensions.Http" Version="9.0.0"
87-
Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
87+
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0')) AND !$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
8888
<PackageVersion Include="Microsoft.Extensions.Http" Version="10.0.0"
8989
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
9090
<PackageVersion Include="Microsoft.Extensions.Logging" Version="8.0.0" Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0'))" />
9191
<PackageVersion Include="Microsoft.Extensions.Logging" Version="9.0.0"
92-
Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
92+
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0')) AND !$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
9393
<PackageVersion Include="Microsoft.Extensions.Logging" Version="10.0.0"
9494
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
9595
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.0" Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0'))" />
9696
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.0"
97-
Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
97+
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0')) AND !$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
9898
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.0"
9999
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
100100
<PackageVersion Include="Microsoft.Extensions.Options" Version="8.0.0" Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0'))" />
101101
<PackageVersion Include="Microsoft.Extensions.Options" Version="9.0.0"
102-
Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
102+
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0')) AND !$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
103103
<PackageVersion Include="Microsoft.Extensions.Options" Version="10.0.0"
104104
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
105105
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
@@ -130,19 +130,20 @@
130130
<PackageVersion Include="System.Data.SQLite" Version="1.0.119" />
131131
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="8.0.1" Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0'))" />
132132
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="9.0.0"
133-
Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
133+
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0')) AND !$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
134134
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="10.0.0"
135135
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
136136
<PackageVersion Include="System.Memory" Version="4.6.3" />
137137
<PackageVersion Include="System.Net.Http" Version="4.3.4" />
138138
<PackageVersion Include="System.Reflection.Emit" Version="4.7.0" />
139139
<PackageVersion Include="System.Reflection.Emit.Lightweight" Version="4.7.0" />
140140
<PackageVersion Include="System.Text.Json" Version="8.0.6" Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0'))" />
141-
<PackageVersion Include="System.Text.Json" Version="9.0.0" Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
141+
<PackageVersion Include="System.Text.Json" Version="9.0.0"
142+
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0')) AND !$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
142143
<PackageVersion Include="System.Text.Json" Version="10.0.0" Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
143144
<PackageVersion Include="System.Threading.Channels" Version="8.0.0" Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0'))" />
144145
<PackageVersion Include="System.Threading.Channels" Version="9.0.0"
145-
Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
146+
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0')) AND !$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
146147
<PackageVersion Include="System.Threading.Channels" Version="10.0.0"
147148
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))" />
148149
<PackageVersion Include="System.Threading.Tasks.Extensions" Version="4.6.3" />
@@ -152,4 +153,4 @@
152153
<GlobalPackageReference Include="GitHubActionsTestLogger" Version="2.4.1" />
153154
<GlobalPackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
154155
</ItemGroup>
155-
</Project>
156+
</Project>

doc/app.vue

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<template>
2+
<div>
3+
<div class="bg-blue-600 text-white py-2 px-4 text-center">
4+
<p class="font-medium">
5+
Massient, Inc. is now behind MassTransit! Preview the new documentation at
6+
<a href="https://masstransit.massient.com/" class="font-bold underline">
7+
https://masstransit.massient.com/
8+
</a>
9+
</p>
10+
</div>
11+
<AppLayout>
12+
<NuxtPage />
13+
</AppLayout>
14+
</div>
15+
</template>

src/MassTransit.Abstractions/Util/ExceptionUtil.cs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,29 @@ namespace MassTransit.Util
88

99
public static class ExceptionUtil
1010
{
11+
static readonly Regex _trim;
1112
static readonly Regex _cleanup;
1213

1314
static ExceptionUtil()
1415
{
1516
const string awaiter = @"at System\.Runtime\.CompilerServices\.TaskAwaiter.*";
1617
const string exception = @"at System\.Runtime\.ExceptionServices\.ExceptionDispatchInfo.*";
18+
const string dependency = @"at MassTransit\.DependencyInjection.*";
1719

18-
_cleanup = new Regex(@"\n\s+(" + string.Join("|", awaiter, exception) + ")+",
19-
RegexOptions.Multiline | RegexOptions.Compiled);
20+
_cleanup = new Regex(@"\n\s+(" + string.Join("|", awaiter, exception, dependency) + ")+", RegexOptions.Multiline | RegexOptions.Compiled);
21+
_trim = new Regex(@"in\s.*MassTransit.*\.cs.*$", RegexOptions.Multiline | RegexOptions.Compiled);
2022
}
2123

2224
public static string GetMessage(Exception exception)
2325
{
2426
try
2527
{
26-
return exception.Message ?? $"An exception of type {exception.GetType()} was thrown but the message was null.";
28+
var exceptionMessage = exception.Message ?? $"An exception of type {exception.GetType()} was thrown but the message was null.";
29+
30+
if (exceptionMessage.Length > 2048)
31+
exceptionMessage = exceptionMessage.Substring(0, 2048);
32+
33+
return exceptionMessage;
2734
}
2835
catch
2936
{
@@ -37,7 +44,13 @@ public static string GetStackTrace(Exception? exception)
3744
if (string.IsNullOrWhiteSpace(stackTrace))
3845
return "";
3946

40-
return _cleanup.Replace(stackTrace, "");
47+
stackTrace = _cleanup.Replace(stackTrace, "");
48+
stackTrace = _trim.Replace(stackTrace, "");
49+
50+
if (stackTrace.Length > 2048)
51+
stackTrace = stackTrace.Substring(0, 2048);
52+
53+
return stackTrace;
4154
}
4255

4356
[Obsolete("This method is obsolete and will be removed in a future version.")]

src/Transports/MassTransit.AmazonSqsTransport/AmazonSqsTransport/AmazonSqsReceiveLockContext.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ TimeSpan CalculateDelay(int timeout)
121121

122122
var delay = CalculateDelay(visibilityTimeout);
123123

124-
visibilityTimeout = Math.Min(60, visibilityTimeout);
124+
visibilityTimeout = Math.Min(_settings.MaxVisibilityTimeoutRenewal, visibilityTimeout);
125125

126126
while (_locked && !_activeTokenSource.IsCancellationRequested)
127127
{

src/Transports/MassTransit.AmazonSqsTransport/AmazonSqsTransport/Configuration/AmazonSqsReceiveEndpointConfiguration.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,12 @@ public override IEnumerable<ValidationResult> Validate()
106106
var visibilityTimeout = TimeSpan.FromSeconds(_settings.VisibilityTimeout);
107107
if (_settings.MaxVisibilityTimeout < visibilityTimeout)
108108
yield return this.Failure("MaxVisibilityTimeout", "Must be greater than or equal to VisibilityTimeout");
109+
110+
if (_settings.MaxVisibilityTimeoutRenewal < 0)
111+
yield return this.Failure("MaxVisibilityTimeoutRenewal", "must be >= 0 (values less than 60 will be set to 60)");
112+
113+
if (_settings.MaxVisibilityTimeoutRenewal > 43200)
114+
yield return this.Failure("MaxVisibilityTimeoutRenewal", "must be <= 43200 seconds (12 hours per AWS SQS limits)");
109115

110116
foreach (var result in base.Validate())
111117
yield return result.WithParentKey(queueName);
@@ -168,6 +174,11 @@ public TimeSpan MaxVisibilityTimeout
168174
set => _settings.MaxVisibilityTimeout = value > MaxAllowedVisibilityTimeout ? MaxAllowedVisibilityTimeout : value;
169175
}
170176

177+
public int MaxVisibilityTimeoutRenewal
178+
{
179+
set => _settings.MaxVisibilityTimeoutRenewal = value < 60 ? 60 : value;
180+
}
181+
171182
public void Subscribe<T>(Action<IAmazonSqsTopicSubscriptionConfigurator>? configure = null)
172183
where T : class
173184
{

src/Transports/MassTransit.AmazonSqsTransport/AmazonSqsTransport/ReceiveSettings.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,13 @@ public interface ReceiveSettings :
5151
/// </summary>
5252
int RedeliverVisibilityTimeout { get; set; }
5353

54+
/// <summary>
55+
/// The number of seconds to extend the visibility timeout when renewing message visibility during processing.
56+
/// Must be at least 60 seconds per AWS SQS API constraints.
57+
/// See <see href="https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ChangeMessageVisibility.html">ChangeMessageVisibility</see>.
58+
/// </summary>
59+
int MaxVisibilityTimeoutRenewal { get; set; }
60+
5461
string? QueueUrl { get; set; }
5562

5663
/// <summary>

src/Transports/MassTransit.AmazonSqsTransport/AmazonSqsTransport/Topology/QueueReceiveSettings.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public QueueReceiveSettings(IAmazonSqsEndpointConfiguration configuration, strin
1919
VisibilityTimeout = 30;
2020
RedeliverVisibilityTimeout = 1;
2121
MaxVisibilityTimeout = TimeSpan.FromHours(12);
22+
MaxVisibilityTimeoutRenewal = 60;
2223

2324
ConcurrentDeliveryLimit = 1;
2425

@@ -43,6 +44,8 @@ public QueueReceiveSettings(IAmazonSqsEndpointConfiguration configuration, strin
4344

4445
public TimeSpan MaxVisibilityTimeout { get; set; }
4546

47+
public int MaxVisibilityTimeoutRenewal { get; set; }
48+
4649
public string? QueueUrl { get; set; }
4750

4851
public Uri GetInputAddress(Uri hostAddress)

src/Transports/MassTransit.AmazonSqsTransport/Configuration/IAmazonSqsReceiveEndpointConfigurator.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ public interface IAmazonSqsReceiveEndpointConfigurator :
3232
/// </summary>
3333
public TimeSpan MaxVisibilityTimeout { set; }
3434

35+
/// <summary>
36+
/// Sets the number of seconds to extend the visibility timeout when renewing message visibility during processing.
37+
/// Values less than 60 will be set to 60 seconds (AWS SQS minimum for ChangeMessageVisibility).
38+
/// Defaults to 60 seconds.
39+
/// See <see href="https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ChangeMessageVisibility.html">ChangeMessageVisibility</see>.
40+
/// </summary>
41+
int MaxVisibilityTimeoutRenewal { set; }
42+
3543
/// <summary>
3644
/// Bind an existing exchange for the message type to the receive endpoint by name
3745
/// </summary>

0 commit comments

Comments
 (0)