ProducerTemplate 应该只有一个实例

发布于 2024-12-12 04:00:38 字数 170 浏览 0 评论 0原文

我们在 Web 应用程序中使用 Spring 和 Camel。在我们的一个控制器中,我们使用 ProducerTemplate 在路由上发送消息,现在我想添加另一个控制器,它将沿着单独的路由发送消息。我试图了解我们是否应该只为整个应用程序使用一个 ProducerTemplate ?

我问这个是因为我在阅读

We are using Spring and Camel in our web application. In one of our controllers we are using the ProducerTemplate to send a message on a route and now I want to add another controller that will send a message down a separate route. I an trying to understand if we are only suppose to have one ProducerTemplate for the whole application?

I ask this because I got a little confused after reading this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

忘你却要生生世世 2024-12-19 04:00:38

引用自您给出的链接:

您并不需要为每个消息调用创建一个 ProducerTemplate ;您应该在启动时创建一个实例并保留它。

此外,当您使用完 ProducerTemplate 后,您应该调用 stop() 方法来关闭它正在使用的所有资源。

因此,在典型的 Web 应用程序中,您不会为每个请求创建一个 ProducerTemplate,例如:

ProducerTemplate template = camelContext.createProducerTemplate();

由于显而易见的原因,这被认为是一种不好的做法。

相反,应该注入端点,例如使用 @EndpointInject 注释

@EndpointInject(uri = "file:{{file.inbox}}")
private ProducerTemplate inbox;

这里

Quoted from the link you gave:

You are not meant to create a ProducerTemplate for each message invocation; you are meant to create a single instance on startup and keep it around.

Also when you have finished using the ProducerTemplate you should call the stop() method to close down all the resources it has been using.

So, in a typical Web application you would not create a ProducerTemplate for every request like:

ProducerTemplate template = camelContext.createProducerTemplate();

This is considered a bad practice, for obvious reasons.

Instead the endpoint should be injected, e.g. by using the @EndpointInject annotation

@EndpointInject(uri = "file:{{file.inbox}}")
private ProducerTemplate inbox;

as described here.

也只是曾经 2024-12-19 04:00:38

一般来说,请确保不要为每条正在处理的消息创建新的 ProducerTemplate。话虽这么说,在不同的路由/bean/处理器中创建其中一些也很好......只需缓存它们以供后续消息请求即可。

In general, make sure you don't create a new ProducerTemplate for each message being processed. That being said, creating a few of them in different routes/beans/processors is fine as well...just cache them for subsequent message requests.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文