179.3. 备注


179.3.1. 使用 ActiveMQ

JMS 组件重复使用 Spring 2 的 JmsTemplate 发送消息。这不是在非J2EE 容器中使用的理想选择,在 JMS 提供程序中通常需要一些缓存来避免 性能不佳

如果要将 Apache ActiveMQ 用作您的消息代理,则建议进行以下操作之一:

  • 使用 ActiveMQ 组件,该组件已优化,以便有效地使用 ActiveMQ
  • 使用 ActiveMQ 中的 PoolingConnectionFactory

179.3.2. 事务和缓存级别

如果您消耗消息并使用事务(transacted=true),则缓存级别的默认设置可能会影响性能。

如果您使用 XA 事务,则无法缓存,因为它可能会导致 XA 事务无法正常工作。

如果没有使用 XA,您应该考虑缓存速度,因为它会加快性能,如设置 cacheLevelName=CACHE_CONSUMER

通过 Camel 2.7.x,cacheLevelName 的默认设置是 CACHE_CONSUMER。您需要明确设置 cacheLevelName=CACHE_NONE

在 Camel 2.8 中,cacheLevelName 的默认设置是 CACHE_AUTO。这个默认自动检测模式,并将缓存级别相应地设置为:

  • CACHE_CONSUMER if transacted=false
  • CACHE_NONE if transacted=true

因此,您可以说默认设置比较保守。如果您使用非 XA 事务,请考虑使用 cacheLevelName=CACHE_CONSUMER

179.3.3. 持久订阅

如果要使用持久主题订阅,则需要同时指定 clientIddurableSubscriptionNameclientId 的值必须是唯一的,且只能由整个网络中的单个 JMS 连接实例使用。您可以选择使用 Virtual Topics 来避免这个限制。此处 对持久消息进行更多背景。

179.3.4. 消息标头映射

在使用消息标头时,JMS 规格指出标头名称必须是有效的 Java 标识符。因此,尝试将您的标头命名为有效的 Java 标识符。这样做的一个好处是,您可以在 JMS Selector 中使用标头(其 SQL92 语法强制用于标头的 Java 标识符语法)。

默认使用用于映射标头名称的简单策略。该策略是替换标头名称中的任何句点和连字符,如下所示,并在标头名称从通过有线发送的 JMS 消息恢复时反转替换。这意味着什么?不再丢失在 bean 组件上调用的方法名称,不再增加文件组件的文件名标头,以此类推。

Camel 中接受标头名称的当前标头名称策略如下:

  • 当 Camel 使用消息时,点被 DOT 替代,在 Camel 使用消息时替换替换
  • hyphen 被 HYPHEN 替代,当 Camel 使用消息时替换替换。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.