当前位置: 首页 > 知识库问答 >
问题:

如何使用ActiveMQ将消息路由到特定的客户端?

尉迟冯浩
2023-03-14

我想运行一个基于Java的消息代理,将消息路由到Web客户端。Web客户端连接在我们的服务器上使用我们的自定义Javawebsocket代码处理,该代码根据用户数据库对用户进行身份验证。

我认为我的服务器端websocket处理程序代码将连接到ActiveMQ,并通过AQMP执行订阅管理。

但是,我有一个具体要求:

  • 将主题的消息专门路由到一个或多个 Web 客户端

请注意,如果客户端未连接,我不需要保留消息。消息用于通知Web客户端应用程序他们需要采取的操作。

我正在考虑ActiveMQ,但我希望有产品经验的人能澄清它是否支持这个要求?

如果ActiveMQ不是最佳选择,您可以推荐其他选择吗?

谢啦

共有1个答案

赏梓
2023-03-14

是的,ActiveMQ是一个很好的选择。

至于具体的方法,这取决于您的数据模型和消息流。您有几种选择,包括:

>

  • 为每个客户机生成并消费一个主题。a.客户机ABC的消息,请转到topic://CLIENTS.ABC,对于客户端XYZ,请转到topic://CLIENTS.XYZ,并且订户相应地连接。

    生成一个带有标题的消息,并使用一个消费者端选择器(在AMQP称为“过滤器”)来过滤每个客户端的消息。(abc客户端订阅- ClientId = ABC,xyz客户端订阅- ClientId = XYZ)

    当使用WebSockets时,你也可以看看STOMP,它是基于文本的协议。(这取决于您的编程语言和您心目中的可用库)

  •  类似资料:
    • 问题内容: 我正在使用socket.io和node.js,直到现在看起来还不错,但我不知道如何从服务器向特定客户端发送消息,如下所示: 但是无论是还是方法似乎都无法满足我的需求。 我发现一种可能的解决方案是,该方法将不发送消息的SessionId数组作为第二个参数,因此我可以将此时连接了所有SessionId的数组传递给服务器,除了那个我希望发送邮件,但是我觉得必须有一个更好的解决方案。 有任何想

    • 问题内容: 我从socket.io + node.js开始,我知道如何在本地发送消息和广播功能:-所有连接的客户端都收到相同的消息。 现在,我想知道如何向特定的客户端发送私人消息,我的意思是一个套接字,用于2个人之间的私人聊天(客户端到客户端流)。谢谢。 问题答案: 当用户连接时,它应使用唯一的用户名(例如电子邮件)向服务器发送消息。 一对用户名和套接字应存储在这样的对象中: 在客户端上,使用以下

    • 问题内容: 我是Go的新手,并且发现自己作为第一个项目使用套接字。这是一个多余的问题,但是我无法理解如何将Websocket更新发送到Go中的特定客户端(使用Gorilla)。 我要解决的主要问题是-使用websocket和搜索引擎(如ES / Lucene)建立预输入。我在搜索引擎上维护了一堆索引,并在其周围进行了Go包装。当我开始在Go中使用websockets时,几乎发现了所有展示广播机制的

    • 在socket.io中,如果要将消息发送到特定的房间,通常在服务器端使用特定的语法:。 但是客户机(我指的是在浏览器中运行的socket.io相关代码)如何指示消息应该发送到特定的房间? 还是socket.io客户端库也为此目的提供了特定的语法? 编辑:澄清一下,我上面的建议似乎起作用了,我只是不确定是否有更好的解决方案。

    • 问题内容: 向所有客户端发送消息效果很好,但是我想向特定的用户名发送消息。我的server.js文件看起来像。它的作用是在运行时,客户端代码将用户添加到对象用户名以及套接字对象中。并立即将单个消息返回给每个连接的客户端。 发出消息的部分 问题答案: 试试这个: socket.id由socket.io保存,并且包含客户端的唯一ID。您可以使用以下命令进行检查:

    • 我正在考虑将Socket.io集成到一个express应用程序中。 js有一个非常好的特性,可以通过socket.io消息调用快速路由。 不过,帆在其他方面比我需要的要多一点。我正在寻找一种方法,使socket.io请求转发到快速路由,而不必使用整个sails框架。我想这是一个很常见的需求,所以我很惊讶我没有找到一个npm模块来做这件事,但是找了很长时间,我什么也没有找到。Express.io会这