我们在Web应用程序中使用Spring和Camel。在我们的一个控制器中,我们使用ProducerTemplate在路由上发送消息,现在我想添加另一个控制器,该控制器将在一条单独的路由上发送消息。我试图了解我们是否仅假设为整个应用程序使用一个ProducerTemplate?
我之所以这样问是因为阅读this后我有些困惑。
最佳答案
引自您提供的链接:
您无意为每个消息调用创建一个ProducerTemplate;您打算在启动时创建一个实例并保留它。
同样,在使用完ProducerTemplate之后,您应该调用stop()方法以关闭其一直在使用的所有资源。
因此,在典型的Web应用程序中,您不会为每个请求创建ProducerTemplate
,例如:
ProducerTemplate template = camelContext.createProducerTemplate();
出于明显的原因,这被认为是不好的做法。
相反,应该注入端点,例如通过使用
@EndpointInject
annotation@EndpointInject(uri = "file:{{file.inbox}}")
private ProducerTemplate inbox;
如here所述。