我正在尝试完全销毁骆驼组件。但是可用的选项是从骆驼上下文中删除骆驼组件,即camelContext.removeComponent(componentName)。但是从骆驼上下文中删除了骆驼组件之后,相应的端点,生产者和使用者并没有遭到破坏,当我重新创建骆驼组件时,它仍然使用旧的生产者,消费者和端点。如何完全销毁它,以便一旦重新创建组件,它还将创建新的Producer,Consumer和Endpoint。
用例之一:我们正在使用Apache骆驼连接到Salesforce以获取元数据。连接Salesforce的凭据更改/过期后,我们需要销毁旧的Salesforce组件并创建一个新的Salesforce组件。我们需要动态地执行此操作,而无需重新启动骆驼上下文或JVM。但是,一旦我们从骆驼上下文中删除了该组件,它只会破坏该组件,但相应的端点,生产者,处理器,消费者仍然是相同的,因此,处理器的HTTP客户端(JsonRestProcessor)保持不变,这与新的HTTP客户端不同创建了Salesforce组件。当我们删除该组件并确定新组件时,它也会创建新的HTTP客户端,但是Processor(JsonRestProcessor)仍引用旧的HTTP客户端。旧的HTTP客户端有时会进入STOPPED状态,而我们对Salesforce的调用失败。当我们尝试使用“ salesforceComponent.getConfig()。getHttpClient()。start()”启动HTTP绑定时,实际上会启动一个新的HTTP客户端,该客户端在调用Salesforce时不会用于连接到Salesforce。而且,由于旧的HTTP客户端处于STOPPED状态,因此对salesforce的任何后续调用都会失败。