组合使用 ActiveMQ 并在 IIS/AppFabric 中运行的单实例 WCF 服务的最佳方法是什么?
我们的服务需要支持 HTTP 传输和 ActiveMQ(监听和发送消息)。我们选择不使用 MSMQ,而将使用 Spring.Net.NMS。我现在遇到的根本问题是 ActiveMQ 需要在启动时连接到队列并保持连接,但 WAS 妨碍了它的消息激活功能。如果服务在消息到达(HTTP/MSMQ 等)之前未激活,则不会触发与 AMQ 的连接。
我知道我可以禁用回收行为,并且我知道我可以使用 Windows 服务进行自托管。但我想利用 AppFabric 中的监控和其他功能。我已经开始使用 IServiceBehavior 并将其用于其他美好的事情。但直到(非 AMQ)消息到达时才会调用该接口(interface)。所以它不会为这个工作。我所希望的是 ServletContextListeners 在 Java 中的工作方式,您可以在其中获取启动和关闭事件。但 WAS 中似乎不存在这样的东西......它仅由到达的消息驱动。
我已经搜索了三天的网络信息,唯一遇到的就是使用静态类构造 (C#) 技巧作为触发器。这是一个黑客行为,但我可以忍受。它仍然留下了彻底关闭的问题,我稍后可以解决这个问题。
有人有解决这个问题的办法吗?
最佳答案
Ladislav 提到的对 ActiveMQ 的直接 WCF 支持仍然受到支持。该模块已经有一段时间没有正式发布了。但是,您仍然可以从 1.5.x 分支或主干获取最新版本并自行编译。
1.5.x 分支与 Apache.NMS 1.5.0 一起使用: https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.WCF/branches/1.5.x/
关于wcf - 如何在启动时使用 WCF 和 IIS 连接到 ActiveMQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6306462/