Polishing
This commit is contained in:
parent
d18fbab7a8
commit
6f131ba1c4
|
|
@ -662,6 +662,10 @@ public class StompBrokerRelayMessageHandler extends AbstractBrokerMessageHandler
|
||||||
return this.sessionId;
|
return this.sessionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public StompHeaderAccessor getConnectHeaders() {
|
||||||
|
return this.connectHeaders;
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
protected TcpConnection<byte[]> getTcpConnection() {
|
protected TcpConnection<byte[]> getTcpConnection() {
|
||||||
return this.tcpConnection;
|
return this.tcpConnection;
|
||||||
|
|
@ -768,39 +772,13 @@ public class StompBrokerRelayMessageHandler extends AbstractBrokerMessageHandler
|
||||||
protected void afterStompConnected(StompHeaderAccessor connectedHeaders) {
|
protected void afterStompConnected(StompHeaderAccessor connectedHeaders) {
|
||||||
this.isStompConnected = true;
|
this.isStompConnected = true;
|
||||||
stats.incrementConnectedCount();
|
stats.incrementConnectedCount();
|
||||||
if (this.isRemoteClientSession) {
|
initHeartbeats(connectedHeaders);
|
||||||
if (taskScheduler != null) {
|
|
||||||
long interval = connectedHeaders.getHeartbeat()[1];
|
|
||||||
this.clientSendInterval = Math.max(interval, this.clientSendInterval);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// system session
|
|
||||||
initHeartbeats(connectedHeaders);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initHeartbeats(StompHeaderAccessor connectedHeaders) {
|
protected void initHeartbeats(StompHeaderAccessor connectedHeaders) {
|
||||||
TcpConnection<byte[]> con = this.tcpConnection;
|
if (taskScheduler != null) {
|
||||||
Assert.state(con != null, "No TcpConnection available");
|
long interval = connectedHeaders.getHeartbeat()[1];
|
||||||
|
this.clientSendInterval = Math.max(interval, this.clientSendInterval);
|
||||||
long clientSendInterval = this.connectHeaders.getHeartbeat()[0];
|
|
||||||
long clientReceiveInterval = this.connectHeaders.getHeartbeat()[1];
|
|
||||||
long serverSendInterval = connectedHeaders.getHeartbeat()[0];
|
|
||||||
long serverReceiveInterval = connectedHeaders.getHeartbeat()[1];
|
|
||||||
|
|
||||||
if (clientSendInterval > 0 && serverReceiveInterval > 0) {
|
|
||||||
long interval = Math.max(clientSendInterval, serverReceiveInterval);
|
|
||||||
con.onWriteInactivity(() ->
|
|
||||||
con.send(HEARTBEAT_MESSAGE).addCallback(
|
|
||||||
result -> {},
|
|
||||||
ex -> handleTcpConnectionFailure(
|
|
||||||
"Failed to forward heartbeat: " + ex.getMessage(), ex)), interval);
|
|
||||||
}
|
|
||||||
if (clientReceiveInterval > 0 && serverSendInterval > 0) {
|
|
||||||
final long interval = Math.max(clientReceiveInterval, serverSendInterval) * HEARTBEAT_MULTIPLIER;
|
|
||||||
con.onReadInactivity(
|
|
||||||
() -> handleTcpConnectionFailure("No messages received in " + interval + " ms.", null), interval);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1006,6 +984,30 @@ public class StompBrokerRelayMessageHandler extends AbstractBrokerMessageHandler
|
||||||
sendSystemSubscriptions();
|
sendSystemSubscriptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void initHeartbeats(StompHeaderAccessor connectedHeaders) {
|
||||||
|
TcpConnection<byte[]> con = getTcpConnection();
|
||||||
|
Assert.state(con != null, "No TcpConnection available");
|
||||||
|
|
||||||
|
long clientSendInterval = getConnectHeaders().getHeartbeat()[0];
|
||||||
|
long clientReceiveInterval = getConnectHeaders().getHeartbeat()[1];
|
||||||
|
long serverSendInterval = connectedHeaders.getHeartbeat()[0];
|
||||||
|
long serverReceiveInterval = connectedHeaders.getHeartbeat()[1];
|
||||||
|
|
||||||
|
if (clientSendInterval > 0 && serverReceiveInterval > 0) {
|
||||||
|
long interval = Math.max(clientSendInterval, serverReceiveInterval);
|
||||||
|
con.onWriteInactivity(() ->
|
||||||
|
con.send(HEARTBEAT_MESSAGE).addCallback(
|
||||||
|
result -> {},
|
||||||
|
ex -> handleTcpConnectionFailure(
|
||||||
|
"Failed to forward heartbeat: " + ex.getMessage(), ex)), interval);
|
||||||
|
}
|
||||||
|
if (clientReceiveInterval > 0 && serverSendInterval > 0) {
|
||||||
|
final long interval = Math.max(clientReceiveInterval, serverSendInterval) * HEARTBEAT_MULTIPLIER;
|
||||||
|
con.onReadInactivity(
|
||||||
|
() -> handleTcpConnectionFailure("No messages received in " + interval + " ms.", null), interval);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void sendSystemSubscriptions() {
|
private void sendSystemSubscriptions() {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (String destination : getSystemSubscriptions().keySet()) {
|
for (String destination : getSystemSubscriptions().keySet()) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue