3

我在运行 Windows Server 2008 R2 Datacenter 的 VM 上设置了 Windows Server Service Bus 1.0。

我编写了一个控制台应用程序来向它发送和接收消息,并且效果很好。

我一直在成功发送大小增加的消息,但控制台应用程序当前在达到 5,226,338 字节(我相信是 5,226,154 字节消息正文 + 184 字节标头)时会崩溃,这刚好低于 5MB。理想情况下,我们需要更多的空间来玩。

一些堆栈跟踪如下...

未处理的异常:Microsoft.ServiceBus.Messaging.MessagingCommunicationException:套接字连接已中止。这可能是由于处理您的消息时出错或远程主机超出接收超时,或者是潜在的网络资源问题造成的。本地套接字超时为“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:已建立的连接被主机中的软件中止

Windows Azure 服务总线显然有 256KB 的固定限制,但本地 Windows Server 服务总线有 50MB 的限制。请参阅下面的文章。

提到 256KB 的 Azure 限制 - http://msdn.microsoft.com/en-us/library/windowsazure/hh694235.aspx

提到 50MB - http://msdn.microsoft.com/en-us/library/windowsazure/jj193026.aspx

我正在努力达到 50MB 的限制,并且想知道我是否需要做一些事情来以某种方式配置它,或者可能需要以某种方式发送消息。我注意到上面的文章中有一个参数名称,想知道它是否可以在 PowerShell 中使用。

我一直在努力在网上找到一些关于此的好信息。有些文章与 Azure 服务总线相关,而其他文章与 Windows Server 服务总线相关,存在很多混淆。

有 Service Bus 1.1,但我认为目前处于预览状态,我不确定这会有所帮助。

我正在使用类似于下面的代码来发送消息。

namespaceManager = NamespaceManager.Create(); 消息工厂 = 消息工厂。创建();

queueClient = messagesFactory.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

我希望有人能帮帮忙。

4

2 回答 2

6

我遇到了同样的问题,但经过几次尝试我已经解决了。

只需打开文件

C:\Program Files\Service Bus\1.1\Microsoft.ServiceBus.Gateway.exe.config

netMessagingProtocolHead并使用名称集更改 nettcp 绑定

maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647"

并重新启动所有服务总线服务。

现在我可以发送和接收 size 的消息了new string('A', 49 * 1024 * 1024)

享受 :-)

马丁

于 2013-10-30T13:35:18.830 回答
1

你得到的例外是超时,所以你最好的选择可能是微调你的超时。您是否尝试将客户端超时设置为更高的值?您可以通过MessagingFactorySettings对象来做到这一点。另外,您是否检查了服务器端日志以查看是否有任何线索?

您提到的参数是设置配额。当您发送大于配额的消息时,应立即拒绝。就您而言,该消息正在被接受,但在传输过程中显然已超时。

于 2013-10-25T22:24:33.653 回答