用例
消息传递是一个多样化且范围广泛的主题 - 有许多不同的用例、需求和部署选项。 这就是为什么在 ActiveMQ 上工作如此有趣的原因之一
本文档试图重点介绍我们尝试使用 ActiveMQ 解决的一些主要用例。
事务性消息传递
此用例侧重于事务性、持久性、永远不会丢失消息以及无论系统故障如何都完全处理每个消息一次。
通常,JMS 连接将以 XA 方式与其他 JMS 连接或其他 XA 资源(如 JDBC/EJB 等)一起使用。
服务器需要用于持久性,也许是服务器集群以提高可用性。 服务器的高可用性是一个额外的优势。
通常,如果任何节点脱机,所有消息都将被持久化,以便在节点恢复联机时使用。
高性能市场数据分发
此用例侧重于吞吐量和高效路由。 目的是尽快将大量快速变化的数据分布到大型网络中。
通常吞吐量和性能是关键 - 因为数据量和变化率非常高,因此很少使用持久性,在故障期间丢失消息通常是可以接受的,因为旧数据通常不是必需的,最新的价格才是重要的。
集群和通用异步消息传递模型
此用例侧重于延迟和速度。
在实现基于 Web 或 EJB 的集群时,目标是维护节点集群,通常使用组播进行发现和保持活动,然后使用直接套接字连接在伙伴之间进行高效通信。 请参阅 ActiveCluster,以了解此集群模型的示例 API 和实现。
这类似于将 JMS 提供程序用作 EJB 风格或 WS 风格服务中的 RMI 层 - 再次可能最终主要使用组播进行发现和直接套接字进行通信以最大程度地减少延迟。 即,而不是在客户端之间设置独立的服务器,客户端最终直接相互通信以减少延迟。
Web 数据流
此用例侧重于 ActiveMQ Classic 中的 Ajax 支持。
越来越多的人希望实时将数据流式传输到 Web 浏览器中。 例如,流式传输金融股票价格,以显示实时 IM 对话、实时拍卖或动态更新实时内容和新闻。
在此用例中,我们将 ActiveMQ Classic 集成到 Web 容器中,并提供紧密的 Web 集成以启用 HTTP POST 来发布消息,以及缓慢的 JavaScript HTTP GET 操作来接收消息。
使用 HTTP 的消息传递 RESTful API
此用例侧重于连接性和跨语言和跨技术连接性。
我们可以为消息代理提供一个 HTTP 接口,允许使用简单的跨语言和技术无关 API 来发布消息或接收消息。 要发送消息,请将其 HTTP POST 到消息代理,要接收消息,请将其 HTTP GET。 使用 URI 和请求参数来表示目标。