2017-05-26 79 views
0

我有一个基于微服务的体系结构,Netty io在Spring启动应用程序上运行,当我想向客户端发送消息时,我必须等待客户端的消息将回复发送给我想发送的回复。 如何在不等待他与我通信的情况下向客户发送消息? 我迷失在这一步。任何时候发送消息给客户端Netty Io

+0

使用两个连接发送的时候你想有一个消息,或者检查如何HTTP流水线完成( https://en.wikipedia.org/wiki/HTTP_pipelining)。 – sturcotte06

+0

我该怎么做? –

+0

在NETTY,不知道,但与原始tcp,使用一个连接发送,一个接收。 – sturcotte06

回答

2

您可以处理这样的:

  1. 让客户端服务器
  2. 上连接让客户端发送Hello报文(可以肯定的是你的客户之一)
  3. 截获该消息上服务器并在通道上存储参考(可在每个通道处理程序上通过调用ctx.channel()
  4. 捕获channelInactive事件在客户端断开连接时删除引用

而不是等待HelloMessage,您也可以捕获channelActive事件,但每次有人连接到您的监听端口时它都会被触发,即使它不是您的客户端之一。这就是为什么我更喜欢使用的“Hello消息”

现在,你有通道上的参考,你可以通过调用channel.writeAndFlush()

+0

但我的疑惑之一是,我怎么能使用这个从另一个微服务开放的渠道呢?我可以把它放在一个变量中,并封装它从异步方法中消耗? –

+0

不,你可能需要定义一个不同的worflow,例如一个微服务的角色是接收/传递消息(比如发布 - 订阅模式),我们没有太多关于你的achitecture和你的代码的信息关于那个 – Prim

+0

这个想法是让端点接收一个应该发送给客户端的命令,接收这个命令并且通过RabbitMQ中的一个队列将它发送到所有的Socket服务器节点,并且看看客户端是什么并且通过消费者来自队列 –

相关问题