Исправление проблемы с Apache-Camel, когда сокеты оставались в состоянии 'CLOSE_WAIT' - PullRequest
0 голосов
/ 28 ноября 2018

Это мой первый набег на верблюда. Возможно, я упускаю что-то очевидное, поэтому, пожалуйста, будьте добры.

Я пытаюсь исправить проблему с верблюдом, когда конечные точки 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))

Однако я не уверенкак будут распределяться данные?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...