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

构建spring集成通道,因为spring websocket不支持非STOMP客户端的消息传递

谭研
2023-03-14
  1. 移动客户端发送->“嗨,我的账单付了吗?”通过WebSocket.
  2. websocket服务器接收此消息并通过redis pub/sub将其传递给websocket客户端服务。
  3. 因为websocket服务器和websocket客户端通过Redi pub/sub连接。它们可以交换消息。
  4. WebSocket客户端将通过socket连接到人工代理系统,并通过“嗨,我的账单付了吗?”。
  5. 响应(“是的,是付费的。”)将再次发布到websocket服务器。
  6. WebSocket服务器将把它发送回特定的用户目标。

由于业务原因,我们希望为这个用例保留2个服务。Websocket客户端可以连接到客户代理系统,并与我们的业务逻辑解耦。我们的移动应用程序将与我们自己的websocket服务器对话。这使我们可以灵活地添加更多的定制,并独立于特定的供应商。

这是我的变通方法

    null

共有1个答案

宰父才
2023-03-14

请参见Java DSL动态和运行时集成流。

您可以按需注册和销毁子流。

保留对动态注册的流id的引用,并在上下文中调用remove()

 类似资料:
  • 我使用Spring的STOMP over WebSocket实现与一个全功能的ActiveMQ代理。当用户向主题订阅时,在成功订阅之前必须通过一些权限逻辑。我使用ChannelInterceptor应用权限逻辑,如下所示: WebSocketConfig。爪哇: WebSocketSecurityConfig.java: MySubscriptionInterceptor。爪哇: 当没有足够权限的

  • 我需要在我的Spring集成上下文中动态地将消息分配给MessageChannel。当我知道我想要的MessageChannel的名称时,我可以通过从上下文中获取MessageChannel bean来做到这一点。 我需要做的是通过编程查找在ChannelAdapter/服务中设置的消息通道的名称/id。 但是,MessageChannel API没有与之关联的getName()或getId()方

  • 我们正试图从ActiveMQ5.x升级到最新的Artemis(2.17),但我们的一个应用程序让我们很难过。 我们单独运行了一个事务,启用了Artemis STOMP调试,下面是我们看到的: 问题的核心似乎是来自上面显示的“send”操作的消息从未到达接收者。我们已经验证了接收者是在线的,并且它响应使用JMS和Openwire连接的其他客户端--但是这个STOMP消息没有被路由到目的地。 如果关闭

  • 我知道Spring集成(SI)会将任何异常(在SI域下)封装到MessageException实例中,并将其放在“错误通道”上。 以下是我的spring配置文件中的几个片段: 客户端对我的实现类进行REST调用,该类将接收到的请求放在上面的spring配置文件中定义的网关上 如上面的spring配置文件所述,错误通道由转换器读取,该转换器为客户端创建有效的失败响应消息并返回该消息。 当我得到一个异

  • 我正在尝试使用Springframework SimpMessageTemplate(默认Stomp实现)来流式传输时间序列数据,以将消息广播到SockJS客户端订阅的主题。但是,这些消息是按顺序接收的。服务器是单线程的,消息按时间戳升序发送。客户端以某种方式接收到了顺序错误的消息。 我使用的是stompjs和springframework的最新版本(4.1.6版本)。

  • 目前,当我的STOMP使用者连接到队列时,被缓冲的消息最终不会被处理。我所说的“缓冲起来”是指生产者在没有消费者连接的情况下向队列写了消息。继续这个场景,当我的消费者连接时,他们能够看到消息,但只能看到新的消息。任何先前的消息最终都不会被发送给消费者。 代理配置