Fix issue with forwarding messaging to STOMP broker
This commit is contained in:
		
							parent
							
								
									4e3390ae04
								
							
						
					
					
						commit
						17aea892f0
					
				|  | @ -283,7 +283,7 @@ public class StompBrokerRelayMessageHandler extends AbstractBrokerMessageHandler | |||
| 		if (SimpMessageType.MESSAGE.equals(messageType)) { | ||||
| 			sessionId = (sessionId == null) ? SystemStompRelaySession.ID : sessionId; | ||||
| 			headers.setSessionId(sessionId); | ||||
| 			headers.updateStompCommandAsClientMessage(); | ||||
| 			command = headers.updateStompCommandAsClientMessage(); | ||||
| 			message = MessageBuilder.withPayload(message.getPayload()).setHeaders(headers).build(); | ||||
| 		} | ||||
| 
 | ||||
|  | @ -292,7 +292,7 @@ public class StompBrokerRelayMessageHandler extends AbstractBrokerMessageHandler | |||
| 			return; | ||||
| 		} | ||||
| 
 | ||||
| 		if (command != null && command.requiresDestination() && !checkDestinationPrefix(destination)) { | ||||
| 		if ((command != null) && command.requiresDestination() && !checkDestinationPrefix(destination)) { | ||||
| 			return; | ||||
| 		} | ||||
| 
 | ||||
|  | @ -386,7 +386,7 @@ public class StompBrokerRelayMessageHandler extends AbstractBrokerMessageHandler | |||
| 					readStompFrame(message); | ||||
| 				} | ||||
| 			}); | ||||
| 			forwardInternal(tcpConn, connectMessage); | ||||
| 			forwardInternal(connectMessage, tcpConn); | ||||
| 		} | ||||
| 
 | ||||
| 		protected void connectionClosed() { | ||||
|  | @ -445,7 +445,7 @@ public class StompBrokerRelayMessageHandler extends AbstractBrokerMessageHandler | |||
| 				logger.warn("Connection to STOMP broker is not active"); | ||||
| 				handleForwardFailure(message); | ||||
| 			} | ||||
| 			else if (!forwardInternal(tcpConnection, message)) { | ||||
| 			else if (!forwardInternal(message, tcpConnection)) { | ||||
| 				handleForwardFailure(message); | ||||
| 			} | ||||
| 		} | ||||
|  | @ -457,7 +457,7 @@ public class StompBrokerRelayMessageHandler extends AbstractBrokerMessageHandler | |||
| 		} | ||||
| 
 | ||||
| 		private boolean forwardInternal( | ||||
| 				TcpConnection<Message<byte[]>, Message<byte[]>> tcpConnection, Message<?> message) { | ||||
| 				Message<?> message, TcpConnection<Message<byte[]>, Message<byte[]>> tcpConnection) { | ||||
| 
 | ||||
| 			Assert.isInstanceOf(byte[].class, message.getPayload(), "Message's payload must be a byte[]"); | ||||
| 
 | ||||
|  |  | |||
|  | @ -220,7 +220,7 @@ public class StompHeaderAccessor extends SimpMessageHeaderAccessor { | |||
| 		return toNativeHeaderMap(); | ||||
| 	} | ||||
| 
 | ||||
| 	public void updateStompCommandAsClientMessage() { | ||||
| 	public StompCommand updateStompCommandAsClientMessage() { | ||||
| 
 | ||||
| 		Assert.state(SimpMessageType.MESSAGE.equals(getMessageType()), | ||||
| 				"Unexpected message type " + getMessage()); | ||||
|  | @ -231,6 +231,8 @@ public class StompHeaderAccessor extends SimpMessageHeaderAccessor { | |||
| 		else if (!getCommand().equals(StompCommand.SEND)) { | ||||
| 			throw new IllegalStateException("Unexpected STOMP command " + getCommand()); | ||||
| 		} | ||||
| 
 | ||||
| 		return getCommand(); | ||||
| 	} | ||||
| 
 | ||||
| 	public void updateStompCommandAsServerMessage() { | ||||
|  |  | |||
|  | @ -113,7 +113,9 @@ public class StompBrokerRelayMessageHandlerIntegrationTests { | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	// test "host" header (virtualHost property) when TCP client is behind interface and configurable | ||||
| 	// When TCP client is behind interface and configurable: | ||||
| 	// test "host" header (virtualHost property) | ||||
| 	// test "/user/.." destination is excluded | ||||
| 
 | ||||
| 	@Test | ||||
| 	public void publishSubscribe() throws Exception { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue