我在运行Windows Server 2008 R2 Datacenter的VM上设置了Windows Server Service Bus 1.0。
我已经编写了一个控制台应用程序来发送和接收消息,这很有效。
我一直在发送成功增加大小的消息,但是当获得5,226,338字节(我认为5,226,154字节消息体+ 184字节头)时,控制台应用程序当前已经崩溃了,这个数据不到5MB。理想情况下,我们需要更多的空间来玩。
一些堆栈跟踪如下......
未处理的例外情况: Microsoft.ServiceBus.Messaging.MessagingCommunicationException:The 套接字连接中止。这可能是由错误引起的 处理您的消息或超过接收超时 远程主机或底层网络资源问题。本地套接字 超时为'00:01:09.2720000'。 - - > System.ServiceModel.CommunicationException:套接字连接是 中止。这可能是由处理您的消息或错误导致的 接收远程主机或基础主机超时超时 网络资源问题。本地套接字超时为'00:01:09.2720000'。 ---> System.IO.IOException:写入操作失败,请参阅内部异常。 ---> System.ServiceModel.CommunicationException:套接字 连接中止。这可能是由错误处理引起的 您的消息或远程主机超出接收超时, 或潜在的网络资源问题。本地套接字超时是 '00:01:09.2720000'。 ---> System.Net.Sockets.SocketException:An 建立的连接被主机中的软件中止 机
Windows Azure Service Bus显然具有256KB的固定限制,但内部部署Windows Server Service Bus的限制为50MB。请参阅以下文章。
提及Azure限制为256KB - http://msdn.microsoft.com/en-us/library/windowsazure/hh694235.aspx
提及50MB - http://msdn.microsoft.com/en-us/library/windowsazure/jj193026.aspx
我正在努力达到50MB的限制,并且想知道我是否需要做某些事情来以某种方式配置它,或者可能需要以某种方式发送消息。我注意到上面的文章中有一个参数名称,并想知道是否可以在PowerShell中使用它。
我一直在努力在网上找到一些好的信息。有一些与Azure Service Bus有关的文章,但与Windows Server Service Bus有关的其他文章有很多混淆。
有Service Bus 1.1,但我认为目前正处于预览状态,我不确定这会有所帮助。
我使用类似下面的代码发送消息。
namespaceManager = NamespaceManager.Create(); messagingFactory = MessagingFactory.Create();
queueClient = messagingFactory.CreateQueueClient(queueName);
queueClient.Send(new BrokeredMessage(new string('x',5226154)));
这是从以下文章的组合中获得的,第一个略微过时,第二个使得需要更改的内容稍微清楚一些,以便让事情有效。
http://haishibai.blogspot.co.uk/2012/08/walkthrough-setting-up-development.html
http://msdn.microsoft.com/en-us/library/windowsazure/jj218335(v=azure.10).aspx
我希望有人可以提供帮助。
答案 0 :(得分:6)
我遇到了同样的问题,但经过几次尝试后我才发现它。
只需打开文件
C:\Program Files\Service Bus\1.1\Microsoft.ServiceBus.Gateway.exe.config
并使用名称netMessagingProtocolHead
set
maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647"
并重新启动所有服务总线服务。
现在我能够发送和接收大小为new string('A', 49 * 1024 * 1024)
的消息。
享受: - )
马丁
答案 1 :(得分:1)
您获得的例外是超时,因此您最好的选择可能是稍微调整一下您的超时。您是否尝试将客户端超时设置为更高的值?您可以通过MessagingFactorySettings对象执行此操作。另外,您是否检查过服务器端日志以查看是否有任何线索可以提供线索?
您提到的参数是设置配额。当您发送的邮件超过配额时,应立即拒绝。在您的情况下,邮件正在被接受,但在传输过程中显然会超时。