所以我们遇到了这个奇怪的问题。我会尽力描述它,也许有人对可能出问题的地方有一些想法。
我们已经使用SpringStomp实现了消息传递机制。我们有一个带有会话处理程序的默认设置,该设置注册了两个不同的帧处理程序(一个用于发送请求,一个用于读取消息)。想法是,我们具有与客户端和服务器相同的代码。我们正在将项目部署在两个不同的位置,并且正在它们之间进行通信。因此,所有内容都是使用Spring Stomp用Java编写的。
除以下情况外,一切正常。假设我们在服务器1和服务器2上有我们的代码。只要其中一台服务器收到一条消息,它们就会对其进行处理,然后将一条消息写入队列。当服务器1为服务器2写入消息时,服务器2读取并开始处理它。这样做时,它需要服务器1的某些内容,因此为服务器1编写一条消息。服务器1对其进行读取,处理,并在完成后为服务器2编写一条消息。
有趣的部分现在到了。服务器2似乎从队列中读取消息(我们可以看到消息已出队,并且我们的代码是唯一的订阅者),但是它从未调用handleFrame方法,也没有引发异常。因此,该消息被视为丢失,从而阻止了初始请求以及整个事件超时。
一段时间以来,我们一直在试图找出问题所在。但是到目前为止,我们已经失败了,所以我们认为那里一定有人可以帮助我们。因此,欢迎任何想法或建议。