@@ -56,19 +56,22 @@ public sealed class RabbitMQBinding : Binding
5656 {
5757 private String m_host ;
5858 private int m_port ;
59+ private long m_maxMessageSize ;
5960 private IProtocol m_brokerProtocol ;
6061 private CompositeDuplexBindingElement m_compositeDuplex ;
61- private MessageEncodingBindingElement m_encoding ;
62+ private TextMessageEncodingBindingElement m_encoding ;
6263 private bool m_isInitialized ;
6364 private bool m_oneWayOnly ;
6465 private ReliableSessionBindingElement m_session ;
6566 private TransactionFlowBindingElement m_transactionFlow ;
6667 private bool m_transactionsEnabled ;
6768 private RabbitMQTransportBindingElement m_transport ;
6869
70+ public static readonly long DefaultMaxMessageSize = 8192L ;
71+
6972 /// <summary>
70- /// Creates a new instance of the RabbitMQBinding class initialized
71- /// to use the Protocols.DefaultProtocol. The broker must be set
73+ /// Creates a new instance of the RabbitMQBinding class initialized
74+ /// to use the Protocols.DefaultProtocol. The broker must be set
7275 /// before use.
7376 /// </summary>
7477 public RabbitMQBinding ( )
@@ -89,7 +92,7 @@ public RabbitMQBinding(String hostname, int port)
8992 /// Uses the broker and protocol specified
9093 /// </summary>
9194 /// <param name="hostname">The hostname of the broker to connect to</param>
92- /// <param name="port">The port of the broker to connect to</param>
95+ /// <param name="port">The port of the broker to connect to</param>
9396 /// <param name="protocol">The protocol version to use</param>
9497 public RabbitMQBinding ( String hostname , int port , IProtocol protocol )
9598 : this ( protocol )
@@ -98,6 +101,30 @@ public RabbitMQBinding(String hostname, int port, IProtocol protocol)
98101 this . Port = port ;
99102 }
100103
104+ /// <summary>
105+ /// Uses the broker, login and protocol specified
106+ /// </summary>
107+ /// <param name="hostname">The hostname of the broker to connect to</param>
108+ /// <param name="port">The port of the broker to connect to</param>
109+ /// <param name="username">The broker username to connect with</param>
110+ /// <param name="password">The broker password to connect with</param>
111+ /// <param name="virtualhost">The broker virtual host</param>
112+ /// <param name="maxMessageSize">The largest allowable encoded message size</param>
113+ /// <param name="protocol">The protocol version to use</param>
114+ public RabbitMQBinding ( String hostname , int port ,
115+ String username , String password , String virtualhost ,
116+ long maxMessageSize , IProtocol protocol )
117+ : this ( protocol )
118+ {
119+ this . HostName = hostname ;
120+ this . Port = port ;
121+ this . Transport . Username = username ;
122+ this . Transport . Password = password ;
123+ this . Transport . VirtualHost = virtualhost ;
124+ this . MaxMessageSize = maxMessageSize ;
125+
126+ }
127+
101128 /// <summary>
102129 /// Uses the specified protocol. The broker must be set before use.
103130 /// </summary>
@@ -118,6 +145,10 @@ public override BindingElementCollection CreateBindingElements()
118145 m_transport . HostName = this . HostName ;
119146 m_transport . Port = this . Port ;
120147 m_transport . BrokerProtocol = this . BrokerProtocol ;
148+ if ( MaxMessageSize != DefaultMaxMessageSize )
149+ {
150+ m_transport . MaxReceivedMessageSize = MaxMessageSize ;
151+ }
121152 BindingElementCollection elements = new BindingElementCollection ( ) ;
122153
123154 if ( m_transactionsEnabled )
@@ -146,12 +177,12 @@ private void Initialize()
146177 m_session = new ReliableSessionBindingElement ( ) ;
147178 m_compositeDuplex = new CompositeDuplexBindingElement ( ) ;
148179 m_transactionFlow = new TransactionFlowBindingElement ( ) ;
149-
180+ m_maxMessageSize = DefaultMaxMessageSize ;
150181 m_isInitialized = true ;
151182 }
152183 }
153184 }
154-
185+
155186 /// <summary>
156187 /// Gets the scheme used by the binding, soap.amqp
157188 /// </summary>
@@ -180,6 +211,16 @@ public int Port
180211 set { m_port = value ; }
181212 }
182213
214+ /// <summary>
215+ /// Specifies the maximum encoded message size
216+ /// </summary>
217+ [ ConfigurationProperty ( "maxmessagesize" ) ]
218+ public long MaxMessageSize
219+ {
220+ get { return m_maxMessageSize ; }
221+ set { m_maxMessageSize = value ; }
222+ }
223+
183224 /// <summary>
184225 /// Specifies the version of the AMQP protocol that should be used to communicate with the broker
185226 /// </summary>
@@ -206,7 +247,7 @@ public ReliableSession ReliableSession
206247 }
207248
208249 /// <summary>
209- /// Determines whether or not the TransactionFlowBindingElement will
250+ /// Determines whether or not the TransactionFlowBindingElement will
210251 /// be added to the channel stack
211252 /// </summary>
212253 public bool TransactionFlow
0 commit comments