搜索

179.4. 选项

download PDF

您可以在 JMS 端点上配置许多不同的属性,该端点映射到 JMSConfiguration POJO 的属性。

警告

映射到 Spring JMS

许多这些属性映射到 Spring JMS 上的属性,Camel 用于发送和接收消息。因此,您可以通过咨询相关的 Spring 文档来获取有关这些属性的更多信息。

179.4.1. 组件选项

JMS 组件支持下列列出的 81 选项:

Name描述默认值类型

配置 (高级)

使用共享的 JMS 配置

 

JmsConfiguration

acceptMessagesWhile Stopping (consumer)

指定消费者在停止时是否接受消息。如果您在运行时启动和停止 JMS 路由,同时队列中仍然有消息排队,您可以考虑启用此选项。如果此选项为 false,并且您停止 JMS 路由,则消息可能会被拒绝,并且 JMS 代理必须尝试恢复,并且再次可能被拒绝,最后该消息可能在 JMS 代理的死信队列中移动。为避免这种情况,建议启用这个选项。

false

布尔值

allowReplyManagerQuick Stop (consumer)

在 request-reply 消息传递的回复管理器中使用的 DefaultMessageListenerContainer 是否允许 DefaultMessageListenerContainer.runningAllowed 标志快速停止,以防 JmsConfigurationBuildisAcceptMessagesWhileStopping 已启用,并且 org.apache.camel.CamelContext 当前已停止。默认情况下,在常规 JMS 用户中启用此快速停止功能,但要启用回复管理器,您必须启用此标志。

false

布尔值

acknowledgementMode (consumer)

JMS 确认模式定义为整数。允许您将特定于供应商的扩展设置为确认模式。对于常规模式,最好改用 confirmmentModeName。

 

int

eagerLoadingOf Properties (consumer)

加载消息时,启用强制加载 JMS 属性,这通常效率低效,因为 JMS 属性可能并不需要,但有时可以提前捕获与底层 JMS 提供程序的任何问题,以及使用 JMS 属性

false

布尔值

acknowledgementModeName (consumer)

JMS 确认名称,即 SESSION_TRANSACTED、CLIENT_ACKNOWLEDGE、AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE

AUTO_ 确认

字符串

autoStartup (consumer)

指定消费者容器是否应自动启动。

true

布尔值

cacheLevel (consumer)

根据底层 JMS 资源的 ID 设置缓存级别。如需了解更多详细信息,请参阅 cacheLevelName 选项。

 

int

cacheLevelName (consumer)

按名称为底层 JMS 资源设置缓存级别。可能的值有:CACHE_AUTO、CACHE_CONNECTION、CACHE_CONSUMER、CACHE_NONE 和 CACHE_SESSION。默认设置为 CACHE_AUTO。如需更多信息,请参阅 Spring 文档和事务缓存级别。

CACHE_AUTO

字符串

replyToCacheLevelName (producer)

在通过 JMS 进行请求/回复时,按名称设置缓存级别。这个选项只适用于使用固定回复队列(而不是临时)。Camel 默认将使用:CACHE_CONSUMER 用于 exclusive 或 shared w/ replyToSelectorName。和 CACHE_SESSION 用于在没有 replyToSelectorName 的情况下共享。有些 JMS 代理(如 IBM WebSphere)可能需要设置 replyToCacheLevelName=CACHE_NONE 才能工作。注意:如果不使用临时队列,则不允许 CACHE_NONE,且您必须使用更高的值,如 CACHE_CONSUMER 或 CACHE_SESSION。

 

字符串

clientId (common)

设置要使用的 JMS 客户端 ID。请注意,如果指定,这个值必须是唯一的,且只能由单个 JMS 连接实例使用。它通常只需要 durable 主题订阅。如果使用 Apache ActiveMQ,您可能更喜欢使用虚拟主题。

 

字符串

concurrentConsumers (consumer)

指定从 JMS 消耗时的默认并发消费者数(而不是通过 JMS 进行请求/回复)。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。当通过 JMS 进行请求/回复时,会使用选项 replyToConcurrentConsumers 来控制回复消息监听器上的并发用户数量。

1

int

replyToConcurrent Consumers (producer)

指定通过 JMS 进行请求/回复时的默认并发消费者数量。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。

1

int

ConnectionFactory (common)

要使用的连接工厂。必须在组件或端点上配置连接工厂。

 

ConnectionFactory

用户名 (security)

与 ConnectionFactory 搭配使用的用户名。您还可以直接在 ConnectionFactory 上配置用户名/密码。

 

字符串

密码 (security)

与 ConnectionFactory 搭配使用的密码。您还可以直接在 ConnectionFactory 上配置用户名/密码。

 

字符串

deliveryPersistent (producer)

指定是否默认使用持久性交付。

true

布尔值

deliveryMode (producer)

指定要使用的交付模式。可能的值有 Possibles 值,这些值由 javax.jms.DeliveryMode 定义。NON_PERSISTENT = 1 和 PERSISTENT = 2.

 

整数

durableSubscriptionName (common)

用于指定持久主题订阅的持久化订阅者名称。还必须配置 clientId 选项。

 

字符串

exceptionListener (advanced)

指定正在获得任何底层 JMS 异常通知的 JMS Exception Listener。

 

ExceptionListener

errorHandler (advanced)

指定在处理消息时引发任何未捕获的异常时调用的 org.springframework.util.ErrorHandler。默认情况下,如果没有配置 errorHandler,这些例外将在 WARN 级别记录。您可以配置日志记录级别,并使用 errorHandlerLoggingLevel 和 errorHandlerLogStackTrace 选项记录堆栈 trace。这样可以更轻松地配置,而不是对自定义 errorHandler 进行编码。

 

ErrorHandler

errorHandlerLogging Level (logging)

允许为日志记录未捕获的异常配置默认的 errorHandler 日志记录级别。

WARN

LoggingLevel

errorHandlerLogStack Trace (logging)

允许由默认的 errorHandler 控制是否应记录堆栈追踪。

true

布尔值

explicitQosEnabled (producer)

设置在发送消息时应使用 deliveryMode、priority 或 timeToLive qualities。这个选项基于 Spring 的 JmsTemplate。deliveryMode、priority 和 timeToLive 选项应用到当前端点。这与 preserveMessageQos 选项相反,它以消息粒度运行,从 Camel In 消息标头读取 QoS 属性。

false

布尔值

exposeListenerSession (consumer)

指定侦听器会话是否应该在消耗消息时公开。

false

布尔值

idleTaskExecutionLimit (advanced)

指定闲置执行接收任务的限值,没有在其执行中收到任何消息。如果达到这个限制,任务将关闭并保持接收其他执行任务(如果是动态调度,请参阅 maxConcurrentConsumers 设置)。Spring 中提供了额外的文档。

1

int

idleConsumerLimit (advanced)

指定在任意给定时间允许闲置的用户数量的限制。

1

int

maxConcurrentConsumers (consumer)

指定从 JMS 消耗时的最大并发消费者数(而不是通过 JMS 进行请求/回复)。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。当通过 JMS 进行请求/回复时,选项 replyToMaxConcurrentConsumers 用于控制回复消息监听器上的并发用户数量。

 

int

replyToMaxConcurrent Consumers (producer)

指定通过 JMS 使用请求/回复时的最大并发消费者数。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。

 

int

replyOnTimeoutToMax ConcurrentConsumers (producer)

指定在通过 JMS 使用请求/回复时超时时继续路由的最大并发消费者数。

1

int

maxMessagesPerTask (advanced)

每个任务的消息数量。-1 代表没有限制。如果您将范围用于并发消费者(如 min max),则可以使用此选项将值设置为 eg 100,以控制消费者在需要较少的工作时缩小的速度。

-1

int

messageConverter (advanced)

要使用自定义 Spring org.springframework.jms.support.converter.MessageConverter,以便您可以控制如何映射到 javax.jms.Message。

 

MessageConverter

mapJmsMessage (advanced)

指定 Camel 是否应该自动将收到的 JMS 消息映射到合适的有效负载类型,如 javax.jms.TextMessage 到 String 等。如需了解更多详细信息,请参阅映射如何工作。

true

布尔值

messageIdEnabled (advanced)

发送时,指定是否应添加消息 ID。这只是对 JMS Broker 的提示。如果 JMS 提供程序接受此提示,则这些消息必须将消息 ID 设为 null;如果提供程序忽略提示,则必须将消息 ID 设置为其普通唯一值

true

布尔值

messageTimestampEnabled (advanced)

指定在发送消息时是否默认启用时间戳。

true

布尔值

alwaysCopyMessage (producer)

如果为 true,Camel 会在传递给制作者以进行发送时始终生成消息的 JMS 消息副本。在某些情况下需要复制消息,例如当设置了 replyToDestinationSelectorName 时(如果设置了 replyToDestinationSelectorName,Camel 会将 alwaysCopyMessage 选项设置为 true,如果设置了 replyToDestinationSelectorName )

false

布尔值

useMessageIDAs CorrelationID (advanced)

指定 JMSMessageID 是否应该始终用作 InOut 消息的 JMSCorrelationID。

false

布尔值

priority (producer)

大于 1 的值在发送时指定消息优先级(其中 0 是最低优先级,9 是最高)。必须启用 explicitQosEnabled 选项,才能使此选项有任何效果。

4

int

pubSubNoLocal (advanced)

指定是否禁止发送由其自身连接发布的消息。

false

布尔值

receiveTimeout (advanced)

接收消息的超时时间(以毫秒为单位)。

1000

long

recoveryInterval (advanced)

指定恢复尝试之间的间隔,例如当连接被刷新时,以毫秒为单位。默认值为 5000 ms,即 5 秒。

5000

long

taskExecutor (consumer)

允许您指定用于消耗消息的自定义任务 executor。

 

TaskExecutor

deliveryDelay (producer)

设置用于 JMS 发送调用的交付延迟。此选项要求 JMS 2.0 兼容代理。

-1

long

timeToLive (producer)

发送消息时,指定消息的生存时间(以毫秒为单位)。

-1

long

转换 (事务)

指定是否使用转换模式

false

布尔值

lazyCreateTransaction Manager (transaction)

如果为 true,如果选项 transacted=true 时没有注入的 transactionManager,则 Camel 将创建一个 JmsTransactionManager。

true

布尔值

transactionManager (transaction)

要使用的 Spring 事务管理器。

 

平台交易管理器

transactionName (transaction)

要使用的事务的名称。

 

字符串

transactionTimeout (transaction)

如果使用转换模式,事务的超时值(以秒为单位)。

-1

int

testConnectionOn Startup (common)

指定是否在启动时测试连接。这样可确保当 Camel 启动所有 JMS 用户与 JMS 代理的有效连接时。如果无法授予连接,则 Camel 会在启动时抛出异常。这样可确保 Camel 不使用失败的连接启动。JMS producers 也经过测试。

false

布尔值

asyncStartListener (advanced)

在启动路由时,是否异步启动 JmsConsumer 消息监听程序。例如,如果 JmsConsumer 无法连接到远程 JMS 代理,则在重试和/或故障转移时可能会阻止。这将导致 Camel 在启动路由时阻止。通过将此选项设置为 true,您将让路由启动,而 JmsConsumer 以异步模式使用专用线程连接到 JMS 代理。如果使用这个选项,请注意,如果无法建立连接,那么会记录异常在 WARN 级别,消费者将无法接收消息;然后您可以重启路由来重试。

false

布尔值

asyncStopListener (advanced)

在停止路由时,是否异步停止 JmsConsumer 消息监听程序。

false

布尔值

forceSendOriginal Message (producer)

使用 mapJmsMessage=false Camel 时,如果您涉及路由期间的标头(get 或 set),则会创建一个新的 JMS 消息来发送到新的 JMS 目的地。将此选项设置为 true,以强制 Camel 发送收到的原始 JMS 消息。

false

布尔值

requestTimeout (producer)

使用 InOut Exchange Pattern 时等待回复的超时(以毫秒为单位)。默认值为 20 秒。您可以包含标头 CamelJmsRequestTimeout 来覆盖此端点配置的超时值,因此每个消息都有单独的超时值。另请参阅 requestTimeoutCheckerInterval 选项。

20000

long

requestTimeoutChecker Interval (advanced)

配置 Camel 在通过 JMS 进行请求/回复时应检查超时的频率。默认情况下,Camel 检查每秒一次。但是,如果发生超时时必须更快地响应,则可以降低这个间隔,以便更频繁地检查。超时由 option requestTimeout 决定。

1000

long

transferExchange (advanced)

您可以通过线线传输交换,而不只是正文和标头。以下字段会被传输: 在 body, Out body, Fault body, In headers, Out headers, Fault 标头, Exchange properties, Exchange exception。这要求对象是序列化的。Camel 将排除任何非序列化对象,并将其记录在 WARN 级别。您必须在生成者和消费者端启用这个选项,因此 Camel 知道有效负载是交换而不是常规有效负载。

false

布尔值

transferException (advanced)

如果启用并且您使用 Request Reply messaging (InOut)和在消费者端的 Exchange 失败,则原因 Exception 将发回为 javax.jms.ObjectMessage 的响应。如果客户端是 Camel,则返回的 Exception 为 rerown。这允许您使用 Camel JMS 作为路由中的网桥,例如,使用持久性队列来启用强大的路由。请注意,如果您也启用了 transferExchange,这个选项会优先使用。需要被捕获的例外是串行的。在返回到生成者时,消费者侧的原始 Exception 可以嵌套在外部异常中,如 org.apache.camel.RuntimeCamelException。

false

布尔值

transferFault (advanced)

如果启用且您使用 Request Reply messaging (InOut),且交换失败,在消费者端使用 SOAP 错误(而不是异常),则 org.apache.camel.MessageAllisFault ()上的错误标志将作为 JMS 标头发送,其键为 JmsConstants#JMS_TRANSFER_FAULT。如果客户端是 Camel,则返回的 fault 标志将在 org.apache.camel.MessageAllsetFault (boolean)上设置。在使用支持错误(如 SOAP)(如 cxf 或 spring-ws)的 Camel 组件时,您可能需要启用此功能。

false

布尔值

jmsOperations (advanced)

允许您使用您自己的 org.springframework.jms.core.JmsOperations 接口实施。Camel 使用 JmsTemplate 作为默认值。可用于测试目的,但不按 spring API 文档中所述使用。

 

JmsOperations

destinationResolver (advanced)

可插拔 org.springframework.jms.support.destination.DestinationResolver,允许您使用您自己的解析器(例如,在 JNDI 注册表中查找实际目的地)。

 

DestinationResolver

replyToType (producer)

允许明确指定在通过 JMS 进行请求/回复时,用于 replyTo 队列的策略。可能的值有: Temporary、Shared 或 Exclusive。默认情况下,Camel 将使用临时队列。但是,如果配置了 replyTo,则默认使用 Shared。此选项允许您使用专用队列而不是共享队列。如需了解更多详细信息,请参阅 Camel JMS 文档,特别是有关在集群环境中运行时所影响的备注,而共享回复队列的性能比其 alternatives Temporary 和 Exclusive 性能较低。

 

ReplyToType

preserveMessageQos (producer)

如果要使用消息上指定的 QoS 设置发送消息,而不是 JMS 端点上的 QoS 设置,则设置为 true。以下三个标头被视为 JMSPriority、JMSDeliveryMode 和 JMSExpiration。您可以提供所有或只提供其中一些。如果没有提供,Camel 将回退到使用端点中的值。因此,在使用此选项时,标头会覆盖来自端点的值。相反,explicitQosEnabled 选项只会使用端点上设置的选项,而不使用消息标头中设置的值。

false

布尔值

asyncConsumer (consumer)

JmsConsumer 是否异步处理 Exchange。如果启用,JmsConsumer 可能会从 JMS 队列中选择下一个消息,而前面的消息异步处理(通过 Asynchronous Routing Engine)。这意味着消息可能没有完全严格按照顺序进行处理。如果禁用(作为默认),则在 JmsConsumer 将从 JMS 队列获取下一个消息之前完全处理 Exchange。请注意,如果启用了 transacted,则 asyncConsumer=true 不会异步运行,因为事务必须同步执行(Camel 3.0 可能支持 async 事务)。

false

布尔值

allowNullBody (producer)

是否允许发送没有正文的消息。如果此选项为 false,并且消息正文为 null,则抛出 JMSException。

true

布尔值

includeSentJMS MessageID (producer)

仅在使用 InOnly (如触发和忘记)发送到 JMS 目的地时才适用。启用此选项将使用实际的 JMSMessageID 增强 Camel Exchange,当消息发送到 JMS 目的地时,由 JMS 客户端使用。

false

布尔值

includeAllJMSX Properties (advanced)

从 JMS 映射到 Camel 消息时,是否要包含所有 JMSXxxx 属性。把它设置为 true 将包括 JMSXAppID 和 JMSXUserID 等属性。注: 如果您使用自定义 headerFilterStrategy,则不会应用这个选项。

false

布尔值

defaultTaskExecutor Type (consumer)

指定在 DefaultMessageListenerContainer 中使用的默认 TaskExecutor 类型,用于消费者端点和生成者端点的 ReplyTo consumer。可能的值: SimpleAsync (使用 Spring 的 SimpleAsyncTaskExecutor)或 ThreadPool (使用 Spring 的 ThreadPoolTaskExecutor 带有最佳值 - 缓存线程池)。如果没有设置,则默认为之前的行为,它使用缓存的线程池作为消费者端点,而 SimpleAsync 用于回复消费者。建议使用 ThreadPool,以动态增加和减少并发消费者在弹性配置中减少线程回收。

 

DefaultTaskExecutor Type

jmsKeyFormatStrategy (advanced)

可插拔编码和解码 JMS 密钥策略,以便它们能够与 JMS 规范兼容。Camel 提供了两个开箱即用的实现:default 和 passthrough。默认策略可以安全地放入点和连字符(. 和 -)。passthrough 策略将密钥保留原样。可用于 JMS 代理,其不小心是 JMS 标头键是否包含非法字符。您可以提供自己的 org.apache.camel.component.jms.JmsKeyFormatStrategy 的实现,并使用 # 表示法引用它。

 

JmsKeyFormatStrategy

allowAdditionalHeaders (producer)

此选项用于允许其他标头,这些标头可能具有根据 JMS 规格无效的值。例如,一些消息系统(如 WMQ)使用前缀 JMS_IBM_MQMD_ 包含带有字节数组或其他无效类型的值的标头名称。您可以指定用逗号分开的多个标头名称,并使用 作为后缀进行通配符匹配。

 

字符串

queueBrowseStrategy (advanced)

在浏览队列时使用自定义 QueueBrowseStrategy

 

QueueBrowseStrategy

messageCreatedStrategy (advanced)

要使用给定的 MessageCreatedStrategy,后者在 Camel 在 Camel 发送 JMS 消息时创建 javax.jms.Message 对象的新实例。

 

MessageCreatedStrategy

waitForProvision CorrelationToBeUpdated Counter (advanced)

在通过 JMS 进行请求/回复时,以及启用选项 useMessageIDAsCorrelationID 时,等待 provisional correlation id 的次数。

50

int

waitForProvision CorrelationToBeUpdated ThreadSleepingTime (advanced)

millis 中的间隔,在每次等待配置关联 ID 时处于睡眠状态。

100

long

correlationProperty (producer)

使用此 JMS 属性来关联 InOut Exchange pattern (request-reply)中的消息,而不是 JMSCorrelationID 属性。这样,您可以将消息与不使用 JMSCorrelationID JMS 属性关联消息的系统交换。如果使用的 JMSCorrelationID 不会被 Camel 使用或设置。如果没有在相同名称下的消息标头中提供,则会生成此处 named 属性的值。

 

字符串

subscriptionDurable (consumer)

设置是否使订阅持久。要使用的持久订阅名称可以通过 subscriptionName 属性指定。默认值为 false。把它设置为 true 以注册持久化订阅,通常与 subscriptionName 值结合使用(除非您的消息监听程序类名称足以满足订阅名称)。仅在侦听主题(pub-sub domain)时具有意义,因此此方法也会切换 pubSubDomain 标志。

false

布尔值

subscriptionShared (consumer)

设置是否使订阅共享。要使用的共享订阅名称可以通过 subscriptionName 属性指定。默认值为 false。把它设置为 true 以注册共享订阅,通常与 subscriptionName 值结合使用(除非您的消息监听程序类名称足以满足订阅名称)。请注意,共享订阅也可能是持久的,因此此标志也可以与 subscriptionDurable 结合使用。仅在侦听主题(pub-sub domain)时具有意义,因此此方法也会切换 pubSubDomain 标志。需要兼容 JMS 2.0 的消息代理。

false

布尔值

subscriptionName (consumer)

设置要创建的订阅的名称。当具有共享或持久化订阅的主题(pub-sub domain)时应用。订阅名称需要在此客户端的 JMS 客户端 id 中唯一。default 是指定消息监听程序的类名称。注意:除了共享订阅(需要 JMS 2.0)外,每个订阅只允许 1 个并发消费者(此消息监听程序容器的默认值)。

 

字符串

streamMessageType Enabled (producer)

设置是否启用 StreamMessage 类型。文件、InputStream 等消息有效负载(如文件、InputStream 等)将通过 BytesMessage 或 StreamMessage 发送。此选项控制将使用哪种类型。默认情况下,使用 BytesMessage 来强制将整个消息有效负载读取到内存中。通过启用此选项,消息有效负载以块的形式读取内存,然后每个块写入 StreamMessage,直到没有更多数据。

false

布尔值

formatDateHeadersTo Iso8601 (producer)

设置日期标头是否应根据 ISO 8601 标准进行格式化。

false

布尔值

headerFilterStrategy (filter)

使用自定义 org.apache.camel.spi.HeaderFilterStrategy 过滤到 Camel 消息的标头。

 

HeaderFilterStrategy

resolveProperty Placeholders (advanced)

组件是否应在启动时解析属性占位符。只有 String 类型的属性可以使用属性占位符。

true

布尔值

179.4.2. 端点选项

JMS 端点使用 URI 语法进行配置:

jms:destinationType:destinationName

使用以下路径和查询参数:

179.4.3. 路径参数(2 参数):

Name描述默认值类型

destinationType

要使用的目的地类型

queue

字符串

destinationName

用作目的地的队列或主题的 必需 名称

 

字符串

179.4.4. 查询参数(93 参数):

Name描述默认值类型

clientId (common)

设置要使用的 JMS 客户端 ID。请注意,如果指定,这个值必须是唯一的,且只能由单个 JMS 连接实例使用。它通常只需要 durable 主题订阅。如果使用 Apache ActiveMQ,您可能更喜欢使用虚拟主题。

 

字符串

ConnectionFactory (common)

如果没有为 setTemplateConnectionFactory (ConnectionFactory)或 setListenerConnectionFactory (ConnectionFactory)指定连接工厂,则设置默认的连接工厂。

 

ConnectionFactory

disableReplyTo (common)

指定 Camel 是否忽略消息中的 JMSReplyTo 标头。如果为 true,Camel 不会发送回复回 JMSReplyTo 标头中指定的目的地。如果您希望 Camel 从路由消耗且您不希望 Camel 自动发送回复消息,因为代码中的另一个组件处理回复消息,则可以使用这个选项。如果要使用 Camel 作为不同消息代理之间的代理,并希望将消息从一个系统路由到另一个系统,也可以使用这个选项。

false

布尔值

durableSubscriptionName (common)

用于指定持久主题订阅的持久化订阅者名称。还必须配置 clientId 选项。

 

字符串

jmsMessageType (common)

允许您强制使用特定的 javax.jms.Message 实施来发送 JMS 消息。可能的值有:Bytes, Map, Object, Stream, Text。默认情况下,Camel 将决定要从 In 正文类型使用哪个 JMS 消息类型。这个选项允许您指定它。

 

JmsMessageType

testConnectionOnStartup (common)

指定是否在启动时测试连接。这样可确保当 Camel 启动所有 JMS 用户与 JMS 代理的有效连接时。如果无法授予连接,则 Camel 会在启动时抛出异常。这样可确保 Camel 不使用失败的连接启动。JMS producers 也经过测试。

false

布尔值

acknowledgementModeName (consumer)

JMS 确认名称,即 SESSION_TRANSACTED、CLIENT_ACKNOWLEDGE、AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE

AUTO_ 确认

字符串

asyncConsumer (consumer)

JmsConsumer 是否异步处理 Exchange。如果启用,JmsConsumer 可能会从 JMS 队列中选择下一个消息,而前面的消息异步处理(通过 Asynchronous Routing Engine)。这意味着消息可能没有完全严格按照顺序进行处理。如果禁用(作为默认),则在 JmsConsumer 将从 JMS 队列获取下一个消息之前完全处理 Exchange。请注意,如果启用了 transacted,则 asyncConsumer=true 不会异步运行,因为事务必须同步执行(Camel 3.0 可能支持 async 事务)。

false

布尔值

autoStartup (consumer)

指定消费者容器是否应自动启动。

true

布尔值

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由错误处理程序,这意味着当消费者试图选择传入消息或类似信息时发生异常,现在将作为消息处理并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.ExceptionHandler 来处理例外情况,该处理程序将被记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

cacheLevel (consumer)

根据底层 JMS 资源的 ID 设置缓存级别。如需了解更多详细信息,请参阅 cacheLevelName 选项。

 

int

cacheLevelName (consumer)

按名称为底层 JMS 资源设置缓存级别。可能的值有:CACHE_AUTO、CACHE_CONNECTION、CACHE_CONSUMER、CACHE_NONE 和 CACHE_SESSION。默认设置为 CACHE_AUTO。如需更多信息,请参阅 Spring 文档和事务缓存级别。

CACHE_AUTO

字符串

concurrentConsumers (consumer)

指定从 JMS 消耗时的默认并发消费者数(而不是通过 JMS 进行请求/回复)。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。当通过 JMS 进行请求/回复时,会使用选项 replyToConcurrentConsumers 来控制回复消息监听器上的并发用户数量。

1

int

artemisConsumerPriority (consumer)

通过消费者优先级,您可以确保高优先级使用者在激活时收到消息。通常,连接到队列的活跃用户以轮循方式接收来自其的消息。使用消费者优先级时,如果多个活动消费者具有相同高的优先级,则会对消息发送循环。只有在高优先级消费者没有可用的信用时,消息才会进入较低优先级消费者,或者那些高优先级消费者已拒绝接受消息(例如,因为它不符合与消费者关联的任何选择器的条件)。

 

int

maxConcurrentConsumers (consumer)

指定从 JMS 消耗时的最大并发消费者数(而不是通过 JMS 进行请求/回复)。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。当通过 JMS 进行请求/回复时,选项 replyToMaxConcurrentConsumers 用于控制回复消息监听器上的并发用户数量。

 

int

replyTo (consumer)

提供一个显式 ReplyTo 目的地,它会覆盖任何 Message.getJMSReplyTo ()的任何传入值。

 

字符串

replyToDeliveryPersistent (consumer)

指定默认情况下是否使用持久发送回复。

true

布尔值

selector (consumer)

设置要使用的 JMS 选择器

 

字符串

subscriptionDurable (consumer)

设置是否使订阅持久。要使用的持久订阅名称可以通过 subscriptionName 属性指定。默认值为 false。把它设置为 true 以注册持久化订阅,通常与 subscriptionName 值结合使用(除非您的消息监听程序类名称足以满足订阅名称)。仅在侦听主题(pub-sub domain)时具有意义,因此此方法也会切换 pubSubDomain 标志。

false

布尔值

subscriptionName (consumer)

设置要创建的订阅的名称。当具有共享或持久化订阅的主题(pub-sub domain)时应用。订阅名称需要在此客户端的 JMS 客户端 id 中唯一。default 是指定消息监听程序的类名称。注意:除了共享订阅(需要 JMS 2.0)外,每个订阅只允许 1 个并发消费者(此消息监听程序容器的默认值)。

 

字符串

subscriptionShared (consumer)

设置是否使订阅共享。要使用的共享订阅名称可以通过 subscriptionName 属性指定。默认值为 false。把它设置为 true 以注册共享订阅,通常与 subscriptionName 值结合使用(除非您的消息监听程序类名称足以满足订阅名称)。请注意,共享订阅也可能是持久的,因此此标志也可以与 subscriptionDurable 结合使用。仅在侦听主题(pub-sub domain)时具有意义,因此此方法也会切换 pubSubDomain 标志。需要兼容 JMS 2.0 的消息代理。

false

布尔值

acceptMessagesWhileStopping (consumer)

指定消费者在停止时是否接受消息。如果您在运行时启动和停止 JMS 路由,同时队列中仍然有消息排队,您可以考虑启用此选项。如果此选项为 false,并且您停止 JMS 路由,则消息可能会被拒绝,并且 JMS 代理必须尝试恢复,并且再次可能被拒绝,最后该消息可能在 JMS 代理的死信队列中移动。为避免这种情况,建议启用这个选项。

false

布尔值

allowReplyManagerQuickStop (consumer)

在 request-reply 消息传递的回复管理器中使用的 DefaultMessageListenerContainer 是否允许 DefaultMessageListenerContainer SerialrunningAllowed ()标志在 JmsConfiguration SerialisAcceptMessagesWhileStopping ()被启用,并且 org.apache.camel.CamelContext 当前被停止。默认情况下,在常规 JMS 用户中启用此快速停止功能,但要启用回复管理器,您必须启用此标志。

false

布尔值

consumerType (consumer)

要使用的消费者类型,可以是: Simple、Default 或 Custom 之一。consumer 类型决定要使用的 Spring JMS 侦听器。default 将使用 org.springframework.jms.listener.DefaultMessageListenerContainer,Simple 将使用 org.springframework.jms.listener.SimpleMessageListenerContainer。当指定 Custom 时,messageListenerContainerFactory 选项定义的 MessageListenerContainerFactory 将决定要使用的 org.springframework.jms.listener.AbstractMessageListenerContainer。

default

ConsumerType

defaultTaskExecutorType (consumer)

指定在 DefaultMessageListenerContainer 中使用的默认 TaskExecutor 类型,用于消费者端点和生成者端点的 ReplyTo consumer。可能的值: SimpleAsync (使用 Spring 的 SimpleAsyncTaskExecutor)或 ThreadPool (使用 Spring 的 ThreadPoolTaskExecutor 带有最佳值 - 缓存线程池)。如果没有设置,则默认为之前的行为,它使用缓存的线程池作为消费者端点,而 SimpleAsync 用于回复消费者。建议使用 ThreadPool,以动态增加和减少并发消费者在弹性配置中减少线程回收。

 

DefaultTaskExecutor Type

eagerLoadingOfProperties (consumer)

在加载消息时,启用 JMS 属性和有效负载的强制加载,这通常效率低效,因为 JMS 属性可能并不是必需的,但有时可以在底层 JMS 提供程序和 JMS 属性中使用任何问题时捕获早期出现的问题

false

布尔值

ExceptionHandler ( consumer)

要让使用者使用自定义例外处理程序:请注意,如果启用了 bridgeErrorHandler 选项,则此选项不使用。默认情况下,消费者将处理异常,其记录在 WARN 或 ERROR 级别中,并忽略。

 

ExceptionHandler

exchangePattern (consumer)

在消费者创建交换时设置交换模式。

 

ExchangePattern

exposeListenerSession (consumer)

指定侦听器会话是否应该在消耗消息时公开。

false

布尔值

replyToSameDestination Allowed (consumer)

是否允许 JMS 使用者向消费者使用的同一目的地发送回复消息。这可防止通过消耗并向其自身发送相同的消息,从而防止无限循环。

false

布尔值

taskExecutor (consumer)

允许您指定用于消耗消息的自定义任务 executor。

 

TaskExecutor

deliveryDelay (producer)

设置用于 JMS 发送调用的交付延迟。此选项要求 JMS 2.0 兼容代理。

-1

long

deliveryMode (producer)

指定要使用的交付模式。Possibles 值是由 javax.jms.DeliveryMode 定义的值。NON_PERSISTENT = 1 和 PERSISTENT = 2.

 

整数

deliveryPersistent (producer)

指定是否默认使用持久性交付。

true

布尔值

explicitQosEnabled (producer)

设置在发送消息时应使用 deliveryMode、priority 或 timeToLive qualities。这个选项基于 Spring 的 JmsTemplate。deliveryMode、priority 和 timeToLive 选项应用到当前端点。这与 preserveMessageQos 选项相反,它以消息粒度运行,从 Camel In 消息标头读取 QoS 属性。

false

布尔值

formatDateHeadersToIso8601 (producer)

设置日期标头是否应根据 ISO 8601 标准进行格式化。

false

布尔值

preserveMessageQos (producer)

如果要使用消息上指定的 QoS 设置发送消息,而不是 JMS 端点上的 QoS 设置,则设置为 true。以下三个标头被视为 JMSPriority、JMSDeliveryMode 和 JMSExpiration。您可以提供所有或只提供其中一些。如果没有提供,Camel 将回退到使用端点中的值。因此,在使用此选项时,标头会覆盖来自端点的值。相反,explicitQosEnabled 选项只会使用端点上设置的选项,而不使用消息标头中设置的值。

false

布尔值

priority (producer)

大于 1 的值在发送时指定消息优先级(其中 0 是最低优先级,9 是最高)。必须启用 explicitQosEnabled 选项,才能使此选项有任何效果。

4

int

replyToConcurrentConsumers (producer)

指定通过 JMS 进行请求/回复时的默认并发消费者数量。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。

1

int

replyToMaxConcurrent Consumers (producer)

指定通过 JMS 使用请求/回复时的最大并发消费者数。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。

 

int

replyToOnTimeoutMax ConcurrentConsumers (producer)

指定在通过 JMS 使用请求/回复时超时时继续路由的最大并发消费者数。

1

int

replyToOverride (producer)

在 JMS 消息中提供一个显式 ReplyTo 目的地,它将覆盖 replyTo 的设置。如果您要将消息转发到远程 Queue,并从 ReplyTo 目的地接收回复消息,这非常有用。

 

字符串

replyToType (producer)

允许明确指定在通过 JMS 进行请求/回复时,用于 replyTo 队列的策略。可能的值有: Temporary、Shared 或 Exclusive。默认情况下,Camel 将使用临时队列。但是,如果配置了 replyTo,则默认使用 Shared。此选项允许您使用专用队列而不是共享队列。如需了解更多详细信息,请参阅 Camel JMS 文档,特别是有关在集群环境中运行时所影响的备注,而共享回复队列的性能比其 alternatives Temporary 和 Exclusive 性能较低。

 

ReplyToType

requestTimeout (producer)

使用 InOut Exchange Pattern 时等待回复的超时(以毫秒为单位)。默认值为 20 秒。您可以包含标头 CamelJmsRequestTimeout 来覆盖此端点配置的超时值,因此每个消息都有单独的超时值。另请参阅 requestTimeoutCheckerInterval 选项。

20000

long

timeToLive (producer)

发送消息时,指定消息的生存时间(以毫秒为单位)。

-1

long

allowAdditionalHeaders (producer)

此选项用于允许其他标头,这些标头可能具有根据 JMS 规格无效的值。例如,一些消息系统(如 WMQ)使用前缀 JMS_IBM_MQMD_ 包含带有字节数组或其他无效类型的值的标头名称。您可以指定用逗号分开的多个标头名称,并使用 作为后缀进行通配符匹配。

 

字符串

allowNullBody (producer)

是否允许发送没有正文的消息。如果此选项为 false,并且消息正文为 null,则抛出 JMSException。

true

布尔值

alwaysCopyMessage (producer)

如果为 true,Camel 会在传递给制作者以进行发送时始终生成消息的 JMS 消息副本。在某些情况下需要复制消息,例如当设置了 replyToDestinationSelectorName 时(如果设置了 replyToDestinationSelectorName,Camel 会将 alwaysCopyMessage 选项设置为 true,如果设置了 replyToDestinationSelectorName )

false

布尔值

correlationProperty (producer)

使用此 JMS 属性来关联 InOut Exchange pattern (request-reply)中的消息,而不是 JMSCorrelationID 属性。这样,您可以将消息与不使用 JMSCorrelationID JMS 属性关联消息的系统交换。如果使用的 JMSCorrelationID 不会被 Camel 使用或设置。如果没有在相同名称下的消息标头中提供,则会生成此处 named 属性的值。

 

字符串

disableTimeToLive (producer)

使用这个选项强制禁用生存时间。例如,当您通过 JMS 进行请求/回复时,Camel 默认将使用 requestTimeout 值作为所发送消息的时间。问题是发送者和接收器系统必须同步其时钟,因此它们处于同步状态。这并非总是容易进行归档。因此,您可以使用 disableTimeToLive=true 设置在发送的消息上生存时间值。然后,消息不会在接收方系统中过期。如需了解更多详细信息,请参见关于生存时间 一节中的。

false

布尔值

forceSendOriginalMessage (producer)

使用 mapJmsMessage=false Camel 时,如果您涉及路由期间的标头(get 或 set),则会创建一个新的 JMS 消息来发送到新的 JMS 目的地。将此选项设置为 true,以强制 Camel 发送收到的原始 JMS 消息。

false

布尔值

includeSentJMSMessageID (producer)

仅在使用 InOnly (如触发和忘记)发送到 JMS 目的地时才适用。启用此选项将使用实际的 JMSMessageID 增强 Camel Exchange,当消息发送到 JMS 目的地时,由 JMS 客户端使用。

false

布尔值

replyToCacheLevelName (producer)

在通过 JMS 进行请求/回复时,按名称设置缓存级别。这个选项只适用于使用固定回复队列(而不是临时)。Camel 默认将使用:CACHE_CONSUMER 用于 exclusive 或 shared w/ replyToSelectorName。和 CACHE_SESSION 用于在没有 replyToSelectorName 的情况下共享。有些 JMS 代理(如 IBM WebSphere)可能需要设置 replyToCacheLevelName=CACHE_NONE 才能工作。注意:如果不使用临时队列,则不允许 CACHE_NONE,且您必须使用更高的值,如 CACHE_CONSUMER 或 CACHE_SESSION。

 

字符串

replyToDestinationSelector Name (producer)

使用固定名称设置 JMS Selector,以便在使用共享队列时过滤您自己的回复信息(也就是说,如果您不使用临时回复队列)。

 

字符串

streamMessageTypeEnabled (producer)

设置是否启用 StreamMessage 类型。文件、InputStream 等消息有效负载(如文件、InputStream 等)将通过 BytesMessage 或 StreamMessage 发送。此选项控制将使用哪种类型。默认情况下,使用 BytesMessage 来强制将整个消息有效负载读取到内存中。通过启用此选项,消息有效负载以块的形式读取内存,然后每个块写入 StreamMessage,直到没有更多数据。

false

布尔值

allowSerializedHeaders (advanced)

控制是否包含序列化标头。仅在 isTransferExchange ()为 true 时才适用。这要求对象是序列化的。Camel 将排除任何非序列化对象,并将其记录在 WARN 级别。

false

布尔值

asyncStartListener (advanced)

在启动路由时,是否异步启动 JmsConsumer 消息监听程序。例如,如果 JmsConsumer 无法连接到远程 JMS 代理,则在重试和/或故障转移时可能会阻止。这将导致 Camel 在启动路由时阻止。通过将此选项设置为 true,您将让路由启动,而 JmsConsumer 以异步模式使用专用线程连接到 JMS 代理。如果使用这个选项,请注意,如果无法建立连接,那么会记录异常在 WARN 级别,消费者将无法接收消息;然后您可以重启路由来重试。

false

布尔值

asyncStopListener (advanced)

在停止路由时,是否异步停止 JmsConsumer 消息监听程序。

false

布尔值

destinationResolver (advanced)

可插拔 org.springframework.jms.support.destination.DestinationResolver,允许您使用您自己的解析器(例如,在 JNDI 注册表中查找实际目的地)。

 

DestinationResolver

errorHandler (advanced)

指定在处理消息时引发任何未捕获的异常时调用的 org.springframework.util.ErrorHandler。默认情况下,如果没有配置 errorHandler,这些例外将在 WARN 级别记录。您可以配置日志记录级别,并使用 errorHandlerLoggingLevel 和 errorHandlerLogStackTrace 选项记录堆栈 trace。这样可以更轻松地配置,而不是对自定义 errorHandler 进行编码。

 

ErrorHandler

exceptionListener (advanced)

指定正在获得任何底层 JMS 异常通知的 JMS Exception Listener。

 

ExceptionListener

headerFilterStrategy (advanced)

使用自定义 HeaderFilterStrategy 过滤到 Camel 消息的标头。

 

HeaderFilterStrategy

idleConsumerLimit (advanced)

指定在任意给定时间允许闲置的用户数量的限制。

1

int

idleTaskExecutionLimit (advanced)

指定闲置执行接收任务的限值,没有在其执行中收到任何消息。如果达到这个限制,任务将关闭并保持接收其他执行任务(如果是动态调度,请参阅 maxConcurrentConsumers 设置)。Spring 中提供了额外的文档。

1

int

includeAllJMSXProperties (advanced)

从 JMS 映射到 Camel 消息时,是否要包含所有 JMSXxxx 属性。把它设置为 true 将包括 JMSXAppID 和 JMSXUserID 等属性。注: 如果您使用自定义 headerFilterStrategy,则不会应用这个选项。

false

布尔值

jmsKeyFormatStrategy (advanced)

可插拔编码和解码 JMS 密钥策略,以便它们能够与 JMS 规范兼容。Camel 提供了两个开箱即用的实现:default 和 passthrough。默认策略可以安全地放入点和连字符(. 和 -)。passthrough 策略将密钥保留原样。可用于 JMS 代理,其不小心是 JMS 标头键是否包含非法字符。您可以提供自己的 org.apache.camel.component.jms.JmsKeyFormatStrategy 的实现,并使用 # 表示法引用它。

 

字符串

mapJmsMessage (advanced)

指定 Camel 是否应该自动将收到的 JMS 消息映射到合适的有效负载类型,如 javax.jms.TextMessage 到 String 等。

true

布尔值

maxMessagesPerTask (advanced)

每个任务的消息数量。-1 代表没有限制。如果您将范围用于并发消费者(如 min max),则可以使用此选项将值设置为 eg 100,以控制消费者在需要较少的工作时缩小的速度。

-1

int

messageConverter (advanced)

要使用自定义 Spring org.springframework.jms.support.converter.MessageConverter,以便您可以控制如何映射到 javax.jms.Message。

 

MessageConverter

messageCreatedStrategy (advanced)

要使用给定的 MessageCreatedStrategy,后者在 Camel 在 Camel 发送 JMS 消息时创建 javax.jms.Message 对象的新实例。

 

MessageCreatedStrategy

messageIdEnabled (advanced)

发送时,指定是否应添加消息 ID。这只是对 JMS Broker 的提示。如果 JMS 提供程序接受此提示,则这些消息必须将消息 ID 设为 null;如果提供程序忽略提示,则必须将消息 ID 设置为其普通唯一值

true

布尔值

messageListenerContainer Factory (advanced)

用于确定用于使用消息的 org.springframework.jms.listener.AbstractMessageListenerContainer 的 MessageListenerContainer 的 registry ID。设置此选项将自动将 consumerType 设置为 Custom。

 

MessageListener ContainerFactory

messageTimestampEnabled (advanced)

指定在发送消息时是否默认启用时间戳。这只是对 JMS Broker 的提示。如果 JMS 提供程序接受此提示,则这些消息必须设置时间戳为零;如果提供程序忽略 hint,则必须将时间戳设置为正常值

true

布尔值

pubSubNoLocal (advanced)

指定是否禁止发送由其自身连接发布的消息。

false

布尔值

receiveTimeout (advanced)

接收消息的超时时间(以毫秒为单位)。

1000

long

recoveryInterval (advanced)

指定恢复尝试之间的间隔,例如当连接被刷新时,以毫秒为单位。默认值为 5000 ms,即 5 秒。

5000

long

requestTimeoutChecker Interval (advanced)

配置 Camel 在通过 JMS 进行请求/回复时应检查超时的频率。默认情况下,Camel 检查每秒一次。但是,如果发生超时时必须更快地响应,则可以降低这个间隔,以便更频繁地检查。超时由 option requestTimeout 决定。

1000

long

同步 (高级)

设置是否应严格使用同步处理,还是允许 Camel 使用异步处理(如果支持)。

false

布尔值

transferException (advanced)

如果启用并且您使用 Request Reply messaging (InOut)和在消费者端的 Exchange 失败,则原因 Exception 将发回为 javax.jms.ObjectMessage 的响应。如果客户端是 Camel,则返回的 Exception 为 rerown。这允许您使用 Camel JMS 作为路由中的网桥,例如,使用持久性队列来启用强大的路由。请注意,如果您也启用了 transferExchange,这个选项会优先使用。需要被捕获的例外是串行的。在返回到生成者时,消费者侧的原始 Exception 可以嵌套在外部异常中,如 org.apache.camel.RuntimeCamelException。

false

布尔值

transferExchange (advanced)

您可以通过线线传输交换,而不只是正文和标头。以下字段会被传输: 在 body, Out body, Fault body, In headers, Out headers, Fault 标头, Exchange properties, Exchange exception。这要求对象是序列化的。Camel 将排除任何非序列化对象,并将其记录在 WARN 级别。您必须在生成者和消费者端启用这个选项,因此 Camel 知道有效负载是交换而不是常规有效负载。

false

布尔值

transferFault (advanced)

如果启用且您使用 Request Reply messaging (InOut),且交换失败,在消费者端使用 SOAP 错误(而不是异常),则 org.apache.camel.MessageAllisFault ()上的错误标志将作为 JMS 标头发送,其键为 JmsConstants#JMS_TRANSFER_FAULT。如果客户端是 Camel,则返回的 fault 标志将在 org.apache.camel.MessageAllsetFault (boolean)上设置。在使用支持错误(如 SOAP)(如 cxf 或 spring-ws)的 Camel 组件时,您可能需要启用此功能。

false

布尔值

useMessageIDAsCorrelation ID (advanced)

指定 JMSMessageID 是否应该始终用作 InOut 消息的 JMSCorrelationID。

false

布尔值

waitForProvisionCorrelation ToBeUpdatedCounter (advanced)

在通过 JMS 进行请求/回复时,以及启用选项 useMessageIDAsCorrelationID 时,等待 provisional correlation id 的次数。

50

int

waitForProvisionCorrelation ToBeUpdatedThreadSleeping Time (advanced)

millis 中的间隔,在每次等待配置关联 ID 时处于睡眠状态。

100

long

errorHandlerLoggingLevel (logging)

允许为日志记录未捕获的异常配置默认的 errorHandler 日志记录级别。

WARN

LoggingLevel

errorHandlerLogStackTrace (logging)

允许由默认的 errorHandler 控制是否应记录堆栈追踪。

true

布尔值

密码 (security)

与 ConnectionFactory 搭配使用的密码。您还可以直接在 ConnectionFactory 上配置用户名/密码。

 

字符串

用户名 (security)

与 ConnectionFactory 搭配使用的用户名。您还可以直接在 ConnectionFactory 上配置用户名/密码。

 

字符串

转换 (事务)

指定是否使用转换模式

false

布尔值

lazyCreateTransaction Manager (transaction)

如果为 true,如果选项 transacted=true 时没有注入的 transactionManager,则 Camel 将创建一个 JmsTransactionManager。

true

布尔值

transactionManager (transaction)

要使用的 Spring 事务管理器。

 

平台交易管理器

transactionName (transaction)

要使用的事务的名称。

 

字符串

transactionTimeout (transaction)

如果使用转换模式,事务的超时值(以秒为单位)。

-1

int

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.