我想运行一个基于Java的消息代理,它将消息路由到Web客户端。 Web客户端连接使用我们的自定义Java websocket代码在我们的服务器上处理,该代码根据用户数据库对用户进行身份验证。
我认为我的服务器端websocket处理程序代码将连接到ActiveMQ并通过AQMP执行订阅管理。
但我有一个特定的要求:
请注意,如果客户端未连接,我不需要保留消息。消息用于向Web客户端应用程序通知他们需要采取的操作。
我正在考虑使用ActiveMQ,但我希望有产品经验的人能够澄清它是否支持这一要求?
如果ActiveMQ不是最好的选择,你能推荐别的吗?
由于
答案 0 :(得分:0)
是的,ActiveMQ是一个很好的选择。
就具体方法而言,它取决于您的数据模型和消息流。 您有几种选择,包括:
生成并使用每个客户端的主题 一个。客户端ABC的消息转到主题://CLIENTS.ABC,对于客户XYZ,请转到主题://CLIENTS.XYZ,订阅者也相应地连接。
生成带有标头的消息并使用消费者侧选择器(在AMQP中也称为“过滤器”)来基于每个客户端过滤消息。 (abc客户订阅 - ClientId = ABC,xyz客户订阅 - ClientId = XYZ)
使用WebSockets时,您可能还会查看基于文本的协议STOMP。 (仅取决于您的编程语言和您想到的可用库)