Skip to content

Commit 066e223

Browse files
Fix #1378
1 parent 9ac46f9 commit 066e223

File tree

3 files changed

+49
-3
lines changed

3 files changed

+49
-3
lines changed

projects/RabbitMQ.Client/client/api/AmqpTcpEndpoint.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public AmqpTcpEndpoint(string hostName, int portOrMinusOne, SslOption ssl, uint
7676
HostName = hostName;
7777
_port = portOrMinusOne;
7878
Ssl = ssl;
79-
_maxMessageSize = maxMessageSize;
79+
_maxMessageSize = Math.Min(maxMessageSize, ConnectionFactory.DefaultMaxMessageSize);
8080
}
8181

8282
/// <summary>

projects/RabbitMQ.Client/client/api/ConnectionFactory.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public sealed class ConnectionFactory : ConnectionFactoryBase, IConnectionFactor
109109
/// Corresponds to the <code>rabbit.max_message_size</code> setting.
110110
/// Note: the default is 0 which means "unlimited".
111111
/// </summary>
112-
public const uint DefaultMaxMessageSize = 134217728;
112+
public const uint DefaultMaxMessageSize = 536870912;
113113

114114
/// <summary>
115115
/// Default value for desired heartbeat interval. Default is 60 seconds,
@@ -454,7 +454,7 @@ public IConnection CreateConnection(IList<string> hostnames)
454454
/// </exception>
455455
public IConnection CreateConnection(IList<string> hostnames, string clientProvidedName)
456456
{
457-
IEnumerable<AmqpTcpEndpoint> endpoints = hostnames.Select(h => new AmqpTcpEndpoint(h, Port, Ssl));
457+
IEnumerable<AmqpTcpEndpoint> endpoints = hostnames.Select(h => new AmqpTcpEndpoint(h, Port, Ssl, MaxMessageSize));
458458
return CreateConnection(EndpointResolverFactory(endpoints), clientProvidedName);
459459
}
460460

projects/Unit/TestConnectionFactory.cs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,5 +269,51 @@ public void TestCreateConnectioUsesValidEndpointWhenMultipleSupplied()
269269
var ep = new AmqpTcpEndpoint("localhost");
270270
using (IConnection conn = cf.CreateConnection(new List<AmqpTcpEndpoint> { invalidEp, ep })) { };
271271
}
272+
273+
[Fact]
274+
public void TestCreateConnectionUsesConfiguredMaxMessageSize()
275+
{
276+
var cf = new ConnectionFactory();
277+
cf.MaxMessageSize = 1500;
278+
using (IConnection conn = cf.CreateConnection())
279+
{
280+
Assert.Equal(cf.MaxMessageSize, conn.Endpoint.MaxMessageSize);
281+
};
282+
}
283+
[Fact]
284+
public void TestCreateConnectionWithAmqpEndpointListUsesAmqpTcpEndpointMaxMessageSize()
285+
{
286+
var cf = new ConnectionFactory();
287+
cf.MaxMessageSize = 1500;
288+
var ep = new AmqpTcpEndpoint("localhost");
289+
Assert.Equal(ConnectionFactory.DefaultMaxMessageSize, ep.MaxMessageSize);
290+
using (IConnection conn = cf.CreateConnection(new List<AmqpTcpEndpoint> { ep }))
291+
{
292+
Assert.Equal(ConnectionFactory.DefaultMaxMessageSize, conn.Endpoint.MaxMessageSize);
293+
};
294+
}
295+
296+
[Fact]
297+
public void TestCreateConnectionWithAmqpEndpointResolverUsesAmqpTcpEndpointMaxMessageSize()
298+
{
299+
var cf = new ConnectionFactory();
300+
cf.MaxMessageSize = 1500;
301+
var ep = new AmqpTcpEndpoint("localhost", -1, new SslOption(), 1200);
302+
using (IConnection conn = cf.CreateConnection(new List<AmqpTcpEndpoint> { ep }))
303+
{
304+
Assert.Equal(ep.MaxMessageSize, conn.Endpoint.MaxMessageSize);
305+
};
306+
}
307+
308+
[Fact]
309+
public void TestCreateConnectionWithHostnameListUsesConnectionFactoryMaxMessageSize()
310+
{
311+
var cf = new ConnectionFactory();
312+
cf.MaxMessageSize = 1500;
313+
using (IConnection conn = cf.CreateConnection(new List<string> { "localhost" }))
314+
{
315+
Assert.Equal(cf.MaxMessageSize, conn.Endpoint.MaxMessageSize);
316+
};
317+
}
272318
}
273319
}

0 commit comments

Comments
 (0)