I recently got a case where my customer was trying to send large messages (> 5 MB) to a service bus queue and was getting a below error message. Smaller messages (< 5 MB) would go through without any issue. 

Error:

Microsoft.ServiceBus.Messaging.MessagingCommunicationException was unhandled 
  HResult=-2146233088
  Message=Error during communication with Service Bus. Check the connection information, then retry.
  Source=Microsoft.ServiceBus
  IsTransient=true
  StackTrace:
       at Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageSender.EndSendCommand(IAsyncResult result)
       at
Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageSender.OnEndSend(IAsyncResult result)
       at
Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageSender.OnSend(TrackingContext trackingContext, IEnumerable`1 messages, TimeSpan timeout)
       at
Microsoft.ServiceBus.Messaging.MessageSender.Send(TrackingContext trackingContext, IEnumerable`1 messages, TimeSpan timeout)
       at
Microsoft.ServiceBus.Messaging.MessageSender.Send(BrokeredMessage message) 
       at
Microsoft.ServiceBus.Messaging.QueueClient.Send(BrokeredMessage message) 
       at
CSG.ServiceBus.Client.GeneralQueueClient`1.Send(T value)
       at
CSG.ServiceBus.ServiceBusProvider.ServiceBusQueue`1.Enqueue(T message) 
      at  
QueueSizing.Program.Main(String[] args) in C:\usr\Development\Mobility\ProofOfConcept\QueueSizing\QueueSizing\Program.cs:line 51
       at
System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
       at
System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at
Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
       at 
System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at
System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at
System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
       at
System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at 
System.Threading.ThreadHelper.ThreadStart() 
  InnerException: System.ServiceModel.CommunicationObjectFaultedException        HResult=-2146233087
       Message=Internal Server Error: The server did not provide a meaningful reply; this might be caused by a premature session shutdown..TrackingId:18787480-6512-4c57-89ea-2618291dd1fb, Timestamp:9/24/2013 2:16:48 PM
       Source=Microsoft.ServiceBus 
       StackTrace: 
         Server stack trace: 
         Exception rethrown at [0]:  
            at
Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
            at
Microsoft.ServiceBus.Messaging.Sbmp.DuplexRequestBindingElement.DuplexRequestSessionChannel.DuplexCorrelationAsyncResult.End(IAsyncResult result)
            at
Microsoft.ServiceBus.Messaging.Sbmp.DuplexRequestBindingElement.DuplexRequestSessionChannel.EndRequest(IAsyncResult result)
            at
Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement.ReconnectChannelFactory`1.RequestSessionChannel.RequestAsyncResult.<GetAsyncSteps>b__4(RequestAsyncResult thisPtr, IAsyncResult r)
            at
Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result)
         Exception rethrown at [1]:  
            at
Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
            at
Microsoft.ServiceBus.Common.AsyncResult`1.End(IAsyncResult asyncResult) 
            at
Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement.ReconnectChannelFactory`1.RequestSessionChannel.EndRequest(IAsyncResult result)
            at
Microsoft.ServiceBus.Messaging.Sbmp.RedirectBindingElement.RedirectContainerChannelFactory`1.RedirectContainerSessionChannel.RequestAsyncResult.<>c__DisplayClass17.<GetAsyncSteps>b__a(RequestAsyncResult thisPtr, IAsyncResult r)
            at
Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result)
         Exception rethrown at [2]:  
            at   Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result)
            at
Microsoft.ServiceBus.Common.AsyncResult`1.End(IAsyncResult asyncResult) 
            at
Microsoft.ServiceBus.Messaging.Sbmp.RedirectBindingElement.RedirectContainerChannelFactory`1.RedirectContainerSessionChannel.EndRequest(IAsyncResult result)
            at
Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement.ReconnectChannelFactory`1.RequestSessionChannel.RequestAsyncResult.<GetAsyncSteps>b__4(RequestAsyncResult thisPtr, IAsyncResult r)
            at
Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result)
         Exception rethrown at [3]:  
            at
Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
            at
Microsoft.ServiceBus.Common.AsyncResult`1.End(IAsyncResult asyncResult)
            at
Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement.ReconnectChannelFactory`1.RequestSessionChannel.EndRequest(IAsyncResult result)
            at
Microsoft.ServiceBus.Messaging.Sbmp.SbmpTransactionalAsyncResult`1.<GetAsyncSteps>b__36(TIteratorAsyncResult thisPtr, IAsyncResult a)
            at
Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result)
         Exception rethrown at [4]:  
            at
Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
            at
Microsoft.ServiceBus.Common.AsyncResult`1.End(IAsyncResult asyncResult) 
            at
Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageSender.EndSendCommand(IAsyncResult result)
      

I tried to reproduce the issue on my machine and I too faced the similar issue while sending larger messages. I found the resolution after a bit of research/troubleshooting at my end.

It seems that there is a configuration value in the  “Microsoft.ServiceBus.Gateway.exe.config” file (located at “C:\Program Files\Service Bus\1.0”) which is restricting the larger messages to be received in the service bus queue.

<binding name="netMessagingProtocolHead" receiveTimeout="24:00:00" listenBacklog="64" maxConnections="64" maxReceivedMessageSize="5242880" maxBufferSize="5242880">
          <readerQuotas maxArrayLength="5242880" maxDepth="64" maxStringContentLength="5242880" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security> 
            <transport clientCredentialType="None"></transport> 
          </security>
        </binding>

The value “maxReceivedMessageSize”, by default, is set to 5MB and hence we were not able to send the larger messages. I tried to increase this value to a larger value (close to 8MB) and I was able to send a 6MB message without any issues.

I hope this helps.

 

Written By
Yakshit Gohel

Reviewed By
Jainath V R

Microsoft GTSC India