做毕设在前端使用stomp创建了sender(生产消息)和listener(监听消息),为了保持数据最新,我设置了10秒的定时器每过一会就调用一次sender发送消息去后端请求数据,再通过listener接收后端传回的数据。
但是我发现每次调用sender都会创建一个connection(通过activemq后台查看的),如图(可以看到有很多个连接了):
所以怎么样能让连接可以多次使用?或者保证我的连接数量不这样每发一次消息就增加一个连接?
做毕设在前端使用stomp创建了sender(生产消息)和listener(监听消息),为了保持数据最新,我设置了10秒的定时器每过一会就调用一次sender发送消息去后端请求数据,再通过listener接收后端传回的数据。
但是我发现每次调用sender都会创建一个connection(通过activemq后台查看的),如图(可以看到有很多个连接了):
所以怎么样能让连接可以多次使用?或者保证我的连接数量不这样每发一次消息就增加一个连接?
参考GPT和自己的思路:
感谢您的问题,关于如何实现 stomp 连接的复用,我提供以下几种方法:
使用连接池技术。连接池技术的基本思路是在应用程序初始化时,创建一定数量的连接并将其存入连接池,当需要连接时,从连接池中检索一个连接,使用后将其释放回连接池,从而实现连接的复用。常用的连接池技术有 C3P0、DBCP、Jedis 等。
在前端代码中实现连接复用。具体做法是,在 FrontController 初始化中创建 stomp 客户端连接,然后在发送消息时,先检查是否已经建立了连接,如果已经建立,则直接使用已有连接发送消息,否则创建新连接。需要注意的是,在关闭连接时,应该判断当前连接是否正在使用,如果正在使用,则等待其彻底关闭之后再关闭。
使用持久连接。持久连接是指在客户端和服务器之间建立一条长连接,保持连接的同时,可以发送多个请求和接收多个响应,从而实现连接的复用。需要注意的是,持久连接需要特殊的配置参数,如超时时间、心跳间隔等,否则可能会引起连接丢失或断开。
希望以上建议可以解决您的问题!