我有一个ASP.NET Webform,它当前调用Java WebService。 ASP.NET Webform是在内部创建/维护的,而Java WS是一个包解决方案,我们只有一个应用程序的WS接口。
问题是,由于系统负载等原因,Java WS有时响应缓慢,而我无能为力。所以目前目前,如果Java-WS响应缓慢,有时会导致ASP.NET Webform长时间延迟,有时会导致ASP.NET达到其超时值并抛出连接。
我需要确保这两个应用程序之间的数据连接,我可以通过增加超时值来实现,但我不能让ASP.NET表单等待超过几秒钟。
这就是排队系统的概念所在。
我的想法是,让ASP.NET表单构建soap请求,然后将其排入本地队列,然后守护进程运行并在Java-WS上触发请求。
在我开始从头开始构建之前,我需要一些指示。
答案 0 :(得分:3)
你可以create a WindowsService hosting a WCF service。
您的网络应用可以调用Windows服务的WCF方法。
您的Windows服务可以异步调用java Web服务方法,使用 begin/End pattern
您的Windows服务甚至可以存储java Web服务的答案,并通过其他WCF方法公开它们。例如,您可以在WCF服务中使用此方法:
1)允许直接调用java Web服务并返回此调用的标识符的方法
2)另一种通过显示调用的标识符
返回java Web服务调用结果的方法您甚至可以使用AJAX来调用Windows服务的WCF方法。
答案 1 :(得分:2)
您可以使用MSMQ
排队来自您客户端的请求。
请记住,MSMQ
不会为您处理任何事情 - 它只是一个传输。
所有这一切都是将MSMQ
消息传递给MSMQ队列。
原始消息的创建和交付消息的处理都在您自己的代码中在发送和接收机器上处理:目标机器必须安装MSMQ,并运行自定义服务来接收和处理它们
无论如何,有一个用于使用JAVA与MSQM互操作的库:http://msmqjava.codeplex.com/
另一种方法是你可以在你的一个窗口框上创建一个队列,然后创建一个服务,从队列中获取消息并将它们转发给Java服务
答案 2 :(得分:2)
您有两个不同的问题: