.net 订阅消息队列的Web应用程序

.net 订阅消息队列的Web应用程序,.net,asp.net,web-services,architecture,messaging,.net,Asp.net,Web Services,Architecture,Messaging,Web有(1)一个Web应用程序,用户在其中创建一些任务,以及(2)处理这些任务的其他系统(基于Java的服务) 任务取决于日期/时间-用户创建任务,将其开始日期设置为(例如)明天凌晨1点,然后完成任务。Java服务明天凌晨1点开始处理任务,并向应用程序报告处理的当前状态 我们计划使用ActiveMQ来(a)通知服务新任务,(b)通知web应用当前任务状态。(a)部分没有问题 我的问题是——(b)好主意吗?Web应用程序必须订阅消息队列,以便在存在报告当前任务进度的消息时调用它。web应用程序应

Web有(1)一个Web应用程序,用户在其中创建一些任务,以及(2)处理这些任务的其他系统(基于Java的服务)

任务取决于日期/时间-用户创建任务,将其开始日期设置为(例如)明天凌晨1点,然后完成任务。Java服务明天凌晨1点开始处理任务,并向应用程序报告处理的当前状态

我们计划使用ActiveMQ来(a)通知服务新任务,(b)通知web应用当前任务状态。(a)部分没有问题

我的问题是——(b)好主意吗?Web应用程序必须订阅消息队列,以便在存在报告当前任务进度的消息时调用它。web应用程序应处理该信息并将其存储在数据库中。
我怀疑我们是否应该这样做,因为如果web应用没有流量,它就会死掉,订阅者也会死掉。所以这些消息不会被处理

创建永久连接到队列的.NET服务是否更好?在web应用中订阅的好处是,如果我们需要在Nhibernate中使用二级缓存,那么一切都可以正常工作。
如果有两个进程(web应用程序、新服务)使用Nhibernate和二级缓存,这可能会导致问题,因为它们中的每一个都可以对不同的数据进行操作



报告可以用普通的web服务完成,但同事们报告说,通过wcf从java到.net进行通信并使用证书进行安全通信是相当复杂的。

我们做了类似的事情,如果服务死亡,则使用消息队列来保存需要在不同网络服务中执行的任务,消息队列将继续写入,我们不会写入sql server,因为我们使用的是另一台机器,这也可能会下降


我们不订阅队列,我们只是打开并弹出消息,如果那里有任何消息,基于计时器,我们发现这更可靠,我们可以设置时间。我们已经构建了类似的系统,在我们的例子中,我们做得稍微不同

  • 我们使用了一个表而不是队列。这允许我们在处理项目时进行日志记录,并通过将状态更改为“未发送”重新发送
  • 我们还使用计时器服务而不是触发器通知轮询表

通知的问题是,当发出通知时,如果本应侦听通知的系统关闭,会发生什么情况。

根据计时器从队列中提取消息有些奇怪。。这不是违反原则吗?(订阅某些类型的消息,并在消息到达时收到通知)