Upgrade to Reactor snapshot builds to take advantage of TcpClient's
reconnect support that was added post-M1. Now, the system relay session
will try every 5 seconds to establish a connection with the broker, both
when first connecting and in the event of subsequently becoming
disconnected.
A more sophisticated reconnection policy, including back off and
failover to different brokers, is possible with the Reactor API. We may
want to enhance the relay's reconnection policy in the future.
Typically, a broken connection is identified by the failure to forward
a message to the broker. As things stand, the message id then discarded.
Any further messages that are forwarded before the connection's been
re-established are queued for forwarding once the CONNECTED frame's been
received. We may want to consider also queueing the message that failed
to send, however we would then need to consider the possibility of the
message itself being what caused the broker to close the connection
and resending it would simply cause the connection to be closed again.
pull/339/head
Andy Wilkinson13 years agocommitted byRossen Stoyanchev
@ -219,12 +224,24 @@ public class StompBrokerRelayMessageHandler implements MessageHandler, SmartLife
@@ -219,12 +224,24 @@ public class StompBrokerRelayMessageHandler implements MessageHandler, SmartLife
@ -376,7 +393,7 @@ public class StompBrokerRelayMessageHandler implements MessageHandler, SmartLife
@@ -376,7 +393,7 @@ public class StompBrokerRelayMessageHandler implements MessageHandler, SmartLife
@ -391,21 +408,24 @@ public class StompBrokerRelayMessageHandler implements MessageHandler, SmartLife
@@ -391,21 +408,24 @@ public class StompBrokerRelayMessageHandler implements MessageHandler, SmartLife
@ -415,6 +435,10 @@ public class StompBrokerRelayMessageHandler implements MessageHandler, SmartLife
@@ -415,6 +435,10 @@ public class StompBrokerRelayMessageHandler implements MessageHandler, SmartLife
@ -432,7 +456,7 @@ public class StompBrokerRelayMessageHandler implements MessageHandler, SmartLife
@@ -432,7 +456,7 @@ public class StompBrokerRelayMessageHandler implements MessageHandler, SmartLife
synchronized(this.monitor){
this.isConnected=true;
brokerAvailable();
flushMessages(this.promise.get());
flushMessages();
}
return;
}
@ -447,7 +471,7 @@ public class StompBrokerRelayMessageHandler implements MessageHandler, SmartLife
@@ -447,7 +471,7 @@ public class StompBrokerRelayMessageHandler implements MessageHandler, SmartLife
@ -456,6 +480,14 @@ public class StompBrokerRelayMessageHandler implements MessageHandler, SmartLife
@@ -456,6 +480,14 @@ public class StompBrokerRelayMessageHandler implements MessageHandler, SmartLife
sendMessageToClient(errorMessage);
}
privatevoiddisconnect(){
this.isConnected=false;
this.connection.close();
this.connection=null;
brokerUnavailable();
}
publicvoidforward(Message<?>message){
if(!this.isConnected){
@ -463,72 +495,77 @@ public class StompBrokerRelayMessageHandler implements MessageHandler, SmartLife
@@ -463,72 +495,77 @@ public class StompBrokerRelayMessageHandler implements MessageHandler, SmartLife
@ -81,7 +81,7 @@ public class StompBrokerRelayMessageHandlerIntegrationTests {
@@ -81,7 +81,7 @@ public class StompBrokerRelayMessageHandlerIntegrationTests {
@ -93,18 +93,18 @@ public class StompBrokerRelayMessageHandlerIntegrationTests {
@@ -93,18 +93,18 @@ public class StompBrokerRelayMessageHandlerIntegrationTests {
@ -115,7 +115,7 @@ public class StompBrokerRelayMessageHandlerIntegrationTests {
@@ -115,7 +115,7 @@ public class StompBrokerRelayMessageHandlerIntegrationTests {
@ -127,20 +127,20 @@ public class StompBrokerRelayMessageHandlerIntegrationTests {
@@ -127,20 +127,20 @@ public class StompBrokerRelayMessageHandlerIntegrationTests {
@ -151,7 +151,7 @@ public class StompBrokerRelayMessageHandlerIntegrationTests {
@@ -151,7 +151,7 @@ public class StompBrokerRelayMessageHandlerIntegrationTests {
@ -163,22 +163,51 @@ public class StompBrokerRelayMessageHandlerIntegrationTests {
@@ -163,22 +163,51 @@ public class StompBrokerRelayMessageHandlerIntegrationTests {
@ -204,6 +233,16 @@ public class StompBrokerRelayMessageHandlerIntegrationTests {
@@ -204,6 +233,16 @@ public class StompBrokerRelayMessageHandlerIntegrationTests {
@ -233,14 +272,27 @@ public class StompBrokerRelayMessageHandlerIntegrationTests {
@@ -233,14 +272,27 @@ public class StompBrokerRelayMessageHandlerIntegrationTests {