Это мой первый набег на верблюда. Возможно, я упускаю что-то очевидное, поэтому, пожалуйста, будьте добры.
Я пытаюсь исправить проблему с верблюдом, когда конечные точки HTTP с динамическими элементами URI оставляют сокеты в состоянии CLOSE_WAIT.
После просмотра проблемы и возможного исправления / обходного пути на RedHat я хочу сделать, как говорится, исправить мои проблемы.
Однако я не уверено том, как правильно реализовать в моем коде, так как функция Camel recipientList(...)
, кажется, вызывает мою проблему.
receientList используется из-за конечных точек в зависимости от информации Exchange (то есть идентификатора в заголовке), иto()
принимает только статические URI конечной точки.
Код проблемы
.when(/* ID header not null */)
.setHeader(Exchange.HTTP_METHOD, constant("PUT"))
// This recipientList is causing the issue
.recipientList(simple(endpoint + '/' + ID_Placeholder + endpointParams))
.end()
Попытка исправить
В документации предлагаетсяследующее решение:
Вместо того, чтобы указывать URI непосредственно в конечной точке, используйте конечную точку только для указания параметров Camel и укажите URI с помощью заголовка обмена CamelHttpUri (В Java, Exchange.HTTP_URI).
Мне показалось, что я должен заменить строку recipientList
следующим:
.setHeader(Exchange.HTTP_URI, simple(endpoint + '/' + ID_HEADER_PLACEHOLDER + endpointParams))
Однако я не уверенкак будут распределяться данные?