Как уничтожить верблюжий компонент и соответствующие конечные точки, производителей и потребителей? - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь полностью уничтожить верблюжий компонент.Но доступный вариант - удалить компонент верблюда из контекста верблюда, то есть camelContext.removeComponent (componentName).Но после удаления компонента верблюда из контекста верблюда соответствующие Конечная точка, Производитель и Потребитель не были уничтожены, и когда я заново создал Компонент Верблюда, он все еще использует старые Производителя, Потребителя и Конечную точку.Как мне полностью уничтожить его, чтобы после повторного создания компонента он также создавал новые Producer, Consumer и Endpoint.

Один из случаев использования: мы подключаемся к Salesforce с использованием Apache Camel для получения метаданных.Как только учетные данные для подключения к Salesforce изменятся / истечет время, нам нужно уничтожить старый компонент Salesforce и создать новый компонент Salesforce.Нам нужно сделать это динамически, не перезапуская контекст верблюда или JVM.Но как только мы удаляем компонент из контекста верблюда, он только уничтожает Компонент, но соответствующая Конечная точка, Производитель, Процессоры, Потребители остаются прежними, следовательно, HTTP-клиент Процессора (JsonRestProcessor) остается тем же, что отличается от HTTP-клиента вновьсоздан компонент Salesforce.Также, когда мы удаляем компонент и создаем новый компонент, он создает новый HTTP-клиент, но Processor (JsonRestProcessor) по-прежнему ссылается на старый HTTP-клиент.Старый HTTP-клиент иногда переходит в состояние STOPPED, и наш вызов Salesforce завершается неудачно.И когда мы пытаемся запустить очистку HTTP, используя «salesforceComponent.getConfig (). GetHttpClient (). Start ()», он фактически запускает новый HTTP-клиент, который не используется для подключения к Salesforce, когда мы делаем вызов Salesforce.А поскольку старый HTTP-клиент находится в состоянии STOPPED, любой последующий вызов Salesforce завершится неудачно.

...