如何在没有MSMQ的情况下通过http接收消息

时间:2010-04-03 13:03:37

标签: c# messaging

我需要一个可靠的消息传递框架,它运行在http / https上(由于客户端安全性要求)并且不使用MSMQ(因为某些客户端将使用Windows XP Home)。客户端只需要能够接收消息,而不是发送消息。

我们已经在服务器上为每个用户建立了一个消息队列,接收者通过连接到服务器上的HttpHandler并从

获取流来获取消息
WebResponse.GetResponseStream()

我们保持此流打开,并使用Stream.Read()从中拉出消息。这个MOSTLY可以工作,但Stream.Read()是一个阻塞调用,我们无法可靠地中断它。我们需要能够在不丢失消息的情况下停止和启动接收器,但是旧的流经常会挂起,即使我们在其线程上调用Thread.Abort也是如此。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

我会使用WCF。它支持WS-ReliableMessaging标准。您可以对其进行配置,以确保邮件以正确的顺序到达。

答案 1 :(得分:1)

关于锁定问题,您是否考虑过WCF框架?

单。一次一个线程可以访问服务对象。这是此属性的默认值。 折返。一次一个线程可以访问服务对象,但线程可以退出并重新进入。 多。一次有多个线程可以访问服务对象。

http://msdn.microsoft.com/en-us/library/dd936243.aspx

它允许对多个调用的服务行为进行大量控制,并且可以使用http和https。