У меня есть ConcurrentHashMap
, который отображает соединения сервера с клиентом
соединения:
{localhost:6080:50848:42a5d558-6264-4f2f-83c4-5a9964e1d168=localhost:50847:6060:a7da2280-abe3-4fce-9650-4e8a0ae31891}
Мне нужно использовать заголовок, чтобы перехватить входящее сообщение, разобрать его
текущий заголовок ip_connectionId
, найдите этот ключ на моей карте и обновите ip_connectionId
значением.
@Bean
@Transformer(inputChannel="responseChannel1", outputChannel="responseChannel2")
public HeaderEnricher responseEnricher() {
Map<String, HeaderValueMessageProcessor<?>> headersToAdd = new HashMap<>();
Expression expression = new SpelExpressionParser().parseExpression("headers['ip_connectionId']");
try {
String serverConnectionId = expression.getValue(String.class);
log.info(serverConnectionId);
String clientConnectionId = outboundToInboundMap.get(serverConnectionId);
log.info(clientConnectionId);
headersToAdd.put("ip_connectionId", new StaticHeaderValueMessageProcessor<>(clientConnectionId));
} catch (Exception e) {
e.printStackTrace();
}
HeaderEnricher enricher = new HeaderEnricher(headersToAdd);
enricher.setDefaultOverwrite(true);
return enricher;
}
Когда я запускаю это, я не вижу операторов журнала, и я все еще получаю эту ошибку:
org.springframework.messaging.MessageHandlingException: Unable to find outbound socket
потому что заголовок ip_connectionId
не был изменен.
Чего мне не хватает? Спасибо