Skip to content

Commit b6f9437

Browse files
Merge pull request #1380 from rabbitmq/fix-1378
Fix #1378
2 parents 9ac46f9 + 39fa2d2 commit b6f9437

File tree

5 files changed

+53
-7
lines changed

5 files changed

+53
-7
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/APIApproval.Approve.verified.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ namespace RabbitMQ.Client
154154
{
155155
public const ushort DefaultChannelMax = 2047;
156156
public const uint DefaultFrameMax = 0u;
157-
public const uint DefaultMaxMessageSize = 134217728u;
157+
public const uint DefaultMaxMessageSize = 536870912u;
158158
public const string DefaultPass = "guest";
159159
public const string DefaultUser = "guest";
160160
public const string DefaultVHost = "/";

projects/Unit/TestBasicPublish.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,22 +110,22 @@ public void CanNotModifyPayloadAfterPublish()
110110
QueueDeclareOk q = m.QueueDeclare();
111111
byte[] sendBody = new byte[1000];
112112
var consumer = new EventingBasicConsumer(m);
113-
var are = new AutoResetEvent(false);
113+
var receivedMessage = new AutoResetEvent(false);
114114
bool modified = true;
115115
consumer.Received += (o, a) =>
116116
{
117117
if (a.Body.Span.IndexOf((byte)1) < 0)
118118
{
119119
modified = false;
120120
}
121-
are.Set();
121+
receivedMessage.Set();
122122
};
123123
string tag = m.BasicConsume(q.QueueName, true, consumer);
124124

125125
m.BasicPublish("", q.QueueName, sendBody);
126126
sendBody.AsSpan().Fill(1);
127127

128-
Assert.True(are.WaitOne(2000));
128+
Assert.True(receivedMessage.WaitOne(5000));
129129
Assert.False(modified, "Payload was modified after the return of BasicPublish");
130130

131131
m.BasicCancel(tag);

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)