我们在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所述。

08-17 15:54