31.4. 端点选项
JMS 端点使用 URI 语法进行配置:
jms:destinationType:destinationName
使用以下路径和查询参数:
31.4.1. 路径参数(2 参数)
Name | 描述 | 默认值 | 类型 |
---|---|---|---|
destinationType (common) | 要使用的目标种类。 Enum 值:
| queue | 字符串 |
destinationName (common) | 用作目的地的队列或主题 所需的 名称。 | 字符串 |
31.4.2. 查询参数(95 参数)
Name | 描述 | 默认值 | 类型 |
---|---|---|---|
clientId (common) | 设置要使用的 JMS 客户端 ID。请注意,如果指定,这个值必须是唯一的,且只能被单个 JMS 连接实例使用。它通常只适用于持久主题订阅。如果使用 Apache ActiveMQ,您可能更喜欢使用 Virtual Topics。 | 字符串 | |
ConnectionFactory (common) | 要使用的连接工厂。必须在组件或端点上配置连接工厂。 | 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 body 类型使用哪个 JMS 消息类型。这个选项允许您指定它。 Enum 值:
| JmsMessageType | |
replyTo (common) | 提供显式 ReplyTo 目的地(覆盖消费者中 Message.getJMSReplyTo ()的所有传入值)。 | 字符串 | |
testConnectionOnStartup (common) | 指定是否在启动时测试连接。这样可确保 Camel 启动所有 JMS 用户与 JMS 代理的有效连接。如果无法授予连接,则 Camel 会在启动时抛出异常。这样可确保 Camel 没有使用失败的连接启动。JMS producer 也经过测试。 | false | 布尔值 |
acknowledgementModeName (consumer) | JMS 确认名称,其为: SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE。 Enum 值:
| AUTO_ACKNOWLEDGE | 字符串 |
artemisConsumerPriority (consumer) | 通过消费者优先级,您可以确保高优先级消费者在消息处于活跃状态时收到消息。通常,连接到队列的活动消费者以轮循方式从它接收消息。当使用消费者优先级时,如果有多个具有相同高优先级的活跃用户,则消息将进行循环发送。只有高优先级消费者没有可用的信用消息或高优先级消费者接受消息时,消息才会降低优先级较低的消费者(例如,它不符合与消费者关联的任何选择器的条件)。 | int | |
asyncConsumer (consumer) | JmsConsumer 是否异步处理交换。如果启用,JmsConsumer 可以从 JMS 队列中提取下一个消息,而上一个消息则异步处理(通过 Asynchronous Routing Engine)。这意味着消息可能没有完全严格按照顺序进行处理。如果禁用(作为默认),则在 JmsConsumer 会从 JMS 队列中提取下一个消息前,会完全处理交换。请注意,如果启用了 transacted,则 asyncConsumer=true 不会异步运行,因为事务必须同步执行(Camel 3.0 必须支持 async 事务)。 | false | 布尔值 |
autoStartup (consumer) | 指定消费者容器是否应自动启动。 | true | 布尔值 |
cacheLevel (consumer) | 根据 ID 为底层 JMS 资源设置缓存级别。如需了解更多详细信息,请参阅 cacheLevelName 选项。 | int | |
cacheLevelName (consumer) | 根据底层 JMS 资源的名称设置缓存级别。可能的值有:CACHE_AUTO、CACHE_CONNECTION、CACHE_CONSUMER、CACHE_NONE 和 CACHE_SESSION。默认设置为 CACHE_AUTO。如需更多信息,请参阅 Spring 文档和事务缓存级别。 Enum 值:
| CACHE_AUTO | 字符串 |
concurrentConsumers (consumer) | 指定从 JMS 消耗时的默认并发消费者数量(而不是通过 JMS 请求/回复)。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/缩减。当通过 JMS 执行 request/reply 时,选项 replyToConcurrentConsumers 用于控制回复消息监听器上的并发消费者数量。 | 1 | int |
maxConcurrentConsumers (consumer) | 指定从 JMS 消耗时的最大并发消费者数(而不是通过 JMS 请求/回复)。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/缩减。当通过 JMS 执行请求/回复时,选项 replyToMaxConcurrentConsumers 用于控制回复消息监听器上的并发消费者数量。 | int | |
replyToDeliveryPersistent (consumer) | 指定是否默认使用持久性交付进行回复。 | true | 布尔值 |
selector (consumer) | 设置要使用的 JMS 选择器。 | 字符串 | |
subscriptionDurable (consumer) | 设置是否使订阅持久化。可使用的 durable 订阅名称通过 subscriptionName 属性指定。默认值为 false。把它设置为 true 以注册持久订阅,通常与 subscriptionName 值结合使用(除非您的消息监听程序类名称足以满足订阅名称)。仅在侦听主题(pub-sub 域)时有意义,因此此方法也会切换 pubSubDomain 标志。 | false | 布尔值 |
subscriptionName (consumer) | 设置要创建的订阅名称。在带有共享或可升级订阅的主题(公共域)中应用。订阅名称需要在此客户端的 JMS 客户端 ID 中唯一。default 是指定消息监听程序的类名称。注: 每个订阅都只允许 1 个并发消费者(这是此消息侦听器容器的默认值),但一个共享订阅(需要 JMS 2.0)除外。 | 字符串 | |
subscriptionShared (consumer) | 设置是否共享订阅。可以使用的共享订阅名称可以通过 subscriptionName 属性指定。默认值为 false。把它设置为 true 以注册共享订阅,通常与 subscriptionName 值结合使用(除非您的消息监听程序类名称足以满足订阅名称)。请注意,共享的订阅也可能是危险的,因此此标志也可以与订阅相结合。仅在侦听主题(pub-sub 域)时有意义,因此此方法也会切换 pubSubDomain 标志。需要 JMS 2.0 兼容消息代理。 | false | 布尔值 |
acceptMessagesWhileStopping (consumer (advanced)) | 指定消费者在停止时是否接受消息。如果您在运行时启动和停止 JMS 路由,则可能会考虑启用此选项,同时仍然在队列中排队消息。如果此选项为 false,并且您停止 JMS 路由,则消息可能会被拒绝,并且 JMS 代理必须尝试 redeliveries (但可能会再次拒绝),最终消息可能会移到 JMS 代理上的死信队列中。要避免这种情况,建议启用这个选项。 | false | 布尔值 |
allowReplyManagerQuickStop (consumer (advanced)) | 是否启用请求管理器中使用的 DefaultMessageListenerContainer,允许 DefaultMessageListenerContainer.runningAllowed 标志在 JmsConfigurationVirtualMachineisAcceptMessagesWhileStopping 时快速停止,并且 org.apache.camel.CamelContext 当前已停止。在常规 JMS 用户中默认启用这种快速停止功能,但要为回复管理器启用这个标志。 | false | 布尔值 |
consumerType (consumer (advanced)) | 要使用的消费者类型,可以是 Simple、Default 或 Custom 之一。消费者类型决定要使用的 Spring JMS 侦听器。默认将使用 org.springframework.jms.listener.DefaultMessageListenerContainer,Simple 将使用 org.springframework.jms.listener.SimpleMessageListenerContainer。指定 Custom 时,由 messageListenerContainerFactory 选项定义的 MessageListenerContainerFactory 将决定要使用的 org.springframework.jms.listener.AbstractMessageListenerContainer。 Enum 值:
| 默认值 | ConsumerType |
defaultTaskExecutorType (consumer (advanced)) | 指定在 DefaultMessageListenerContainer 中使用哪些默认 TaskExecutor 类型,用于消费者端点和制作者端点的 ReplyTo consumer。可能的值: SimpleAsync (使用 Spring 的 SimpleAsyncTaskExecutor)或 ThreadPool (使用 Spring 的 ThreadPoolTaskExecutor 带有最佳值 - 缓存线程池)。如果没有设置,则默认为之前的行为,它将缓存线程池用于消费者端点,而 SimpleAsync 用于回复用户。建议使用 ThreadPool 来减少弹性配置中线程垃圾箱,同时动态增加和减少并发用户。 Enum 值:
| DefaultTaskExecutorType | |
eagerLoadingOfProperties (consumer (advanced)) | 加载消息时立即启用 JMS 属性和有效负载的 eager 加载,因为 JMS 属性可能并不是必需的,但有时可能会捕获与底层 JMS 提供程序和使用 JMS 属性的早期问题。另请参阅选项 eagerPoisonBody。 | false | 布尔值 |
eagerPoisonBody (consumer (advanced)) | 如果启用了 eagerLoadingOfProperties,并且 JMS 消息有效负载(JMS 正文或 JMS 属性)是 poison (无法读取/映射),然后将这个文本设置为消息正文,因此可以处理消息( poison 的原因)已作为交换异常保存。这可以通过设置 eagerPoisonBody=false 来关闭。另请参阅 eagerLoadingOfProperties 选项。 | Poison JMS 消息,因为 $\{exception.message} | 字符串 |
exceptionHandler (consumer (advanced)) | 要让使用者使用自定义例外处理程序:请注意,如果启用了 bridgeErrorHandler 选项,则此选项不使用。默认情况下,消费者将处理异常,其记录在 WARN 或 ERROR 级别中,并忽略。 | ExceptionHandler | |
exchangePattern (consumer (advanced)) | 在消费者创建交换时设置交换模式。 Enum 值:
| ExchangePattern | |
exposeListenerSession (consumer (advanced)) | 指定在消耗消息时是否应公开监听程序会话。 | false | 布尔值 |
replyToSameDestinationAllowed (consumer (advanced)) | JMS 使用者是否允许向消费者使用的同一目的地发送回复消息。这可防止出现无限循环,并通过消耗并向自己发送相同的消息。 | false | 布尔值 |
taskExecutor (consumer (advanced)) | 允许您指定自定义任务执行器以使用消息。 | TaskExecutor | |
deliveryDelay (producer) | 设置用于发送 JMS 发送调用的交付延迟。这个选项需要 JMS 2.0 兼容代理。 | -1 | long |
deliveryMode (producer) | 指定要使用的交付模式。可能的值是由 javax.jms.DeliveryMode 定义的值。NON_PERSISTENT = 1 和 PERSISTENT = 2。 Enum 值:
| 整数 | |
deliveryPersistent (producer) | 指定默认使用持久性交付。 | true | 布尔值 |
explicitQosEnabled (producer) | 设置在发送消息时使用 deliveryMode、priority 或 timeToLive 数量服务。这个选项基于 Spring 的 JmsTemplate。deliveryMode、priority 和 timeToLive 选项应用到当前的端点。这与 preserveMessageQos 选项(按消息粒度运行)相反,从 Camel In 消息标头中读取 QoS 属性。 | false | 布尔值 |
formatDateHeadersToIso8601 (producer) | 根据 ISO 8601 标准设置 JMS 日期属性是否应格式化。 | false | 布尔值 |
lazyStartProducer (producer) | 生成者是否应懒惰启动 (在第一个消息中)。通过懒惰启动,您可以使用此选项来允许 CamelContext 和路由在生成者启动期间启动,并导致路由启动失败。通过懒惰启动,启动失败可以在路由信息时通过 Camel 的路由错误处理程序进行处理。请注意,在处理第一个消息时,创建并启动生成者可能需要稍等时间,并延长处理的总处理时间。 | false | 布尔值 |
preserveMessageQos (producer) | 如果要使用消息中指定的 QoS 设置来发送消息,而不是 JMS 端点上的 QoS 设置。以下三个标头被视为 JMSPriority、JMSDeliveryMode 和 JMSExpiration。您可以提供全部或仅提供其中一些。如果没有提供,Camel 将回退到使用端点中的值。因此,在使用此选项时,标头会覆盖端点中的值。与之相反,clearQosEnabled 选项将仅使用端点上设置的选项,而不使用来自消息标头中的值。 | false | 布尔值 |
priority (producer) | 大于 1 的值指定发送时的消息优先级(其中 1 是最低优先级,9 是最高)。必须启用 explicitQosEnabled 选项才能使此选项生效。 Enum 值:
| 4 | int |
replyToConcurrentConsumers (producer) | 指定执行请求/通过 JMS 回复时的默认并发消费者数量。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/缩减。 | 1 | int |
replyToMaxConcurrentConsumers (producer) | 指定在通过 JMS 使用请求/回复时的最大并发消费者数。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/缩减。 | int | |
replyToOnTimeoutMaxConcurrentConsumers (producer) | 指定使用请求/通过 JMS 时超时时继续路由的最大并发消费者数。 | 1 | int |
replyToOverride (producer) | 在 JMS 消息中提供显式 ReplyTo 目的地,这将覆盖 replyTo 的设置。如果要将消息转发到远程队列,并从 ReplyTo 目的地接收回复消息,这非常有用。 | 字符串 | |
replyToType (producer) | 允许明确指定在执行 request/reply 时要用于 replyTo 队列的策略类型。可能的值有:Temporary、share 或 Exclusive。默认情况下,Camel 将使用临时队列。但是,如果配置了 replyTo,则默认使用 Shared。这个选项允许您使用专用队列而不是共享的队列。如需了解更多详细信息,请参阅 Camel JMS 文档,特别是在集群环境中运行时的影响的备注,以及共享回复队列的性能低于其 alternatives Temporary 和 Exclusive。 Enum 值:
| ReplyToType | |
requestTimeout (producer) | 使用 InOut Exchange Pattern (毫秒)时等待回复的超时时间。默认值为 20 秒。您可以包含标头 CamelJmsRequestTimeout 来覆盖此端点配置的超时值,因此具有每个消息独立的超时值。另请参阅 requestTimeoutCheckerInterval 选项。 | 20000 | long |
timeToLive (producer) | 发送消息时,指定消息的时间到时间(以毫秒为单位)。 | -1 | long |
allowAdditionalHeaders (producer (advanced)) | 此选项用于允许其他标头,这些标头可能具有根据 JMS 规范无效的值。例如,一些消息系统(如 WMQ)使用前缀 JMS_IBM_MQMD_ 包含字节数组或其他无效类型的值来执行此操作。您可以用逗号指定多个标头名称,并用作通配符匹配的后缀。 | 字符串 | |
allowNullBody (producer (advanced)) | 是否允许在没有正文的情况下发送消息。如果此选项为 false,且消息正文为 null,则会抛出 JMSException。 | true | 布尔值 |
alwaysCopyMessage (producer (advanced)) | 如果为 true,则 Camel 始终会在消息传递给发送的制作者时生成 JMS 消息副本。在某些情况下需要复制消息,如设置 replyToDestinationSelectorName 时(如果设置了 replyToDestinationSelectorName,则 Camel 会将 alwaysCopyMessage 选项设置为 true)。 | false | 布尔值 |
correlationProperty (producer (advanced)) | 当使用 InOut 交换模式时,使用此 JMS 属性而不是 JMSCorrelationID JMS 属性来关联消息。如果设置消息仅针对此属性 JMSCorrelationID 属性的值关联,则将忽略且未由 Camel 设置。 | 字符串 | |
disableTimeToLive (producer (advanced)) | 使用这个选项强制禁用时间。例如,当您通过 JMS 进行请求/回复时,Camel 默认使用 requestTimeout 值作为发送的消息的时间。问题是,发送者和接收器系统必须同步其时钟,因此它们正在同步。这并非始终易于归档。因此,您可以使用 disableTimeToLive=true 来不设置发送消息上的生存时间。然后,消息不会在接收器系统中过期。如需了解更多详细信息,请参见以下部分关于生存时间。 | false | 布尔值 |
forceSendOriginalMessage (producer (advanced)) | 当使用 mapJmsMessage=false Camel 时,如果在路由中涉及标头(get 或 set),则会创建一个新的 JMS 消息来发送到新的 JMS 目的地。将此选项设置为 true,以强制 Camel 发送收到的原始 JMS 消息。 | false | 布尔值 |
includeSentJMSMessageID (producer (advanced)) | 仅在使用 InOnly 发送到 JMS 目的地时适用(例如触发和忘记)。启用此选项将增强 Camel Exchange 与 JMS 客户端在消息发送到 JMS 目的地时使用的实际 JMSMessageID。 | false | 布尔值 |
replyToCacheLevelName (producer (advanced)) | 在执行请求/通过 JMS 时,按名称为回复消费者设置缓存级别。这个选项仅在使用固定回复队列(而非临时)时才适用。Camel 默认将使用:CACHE_CONSUMER 用于专用或共享的 w/ replyToSelectorName。和 CACHE_SESSION 用于没有 replyToSelectorName 的共享。IBM WebSphere 等 JMS 代理可能需要设置 replyToCacheLevelName=CACHE_NONE 才能正常工作。注:如果使用临时队列,则不允许使用更高的值,如 CACHE_CONSUMER 或 CACHE_SESSION。 Enum 值:
| 字符串 | |
replyToDestinationSelectorName (producer (advanced)) | 使用要使用的固定名称设置 JMS Selector,以便您可以在使用共享队列(也就是说,如果您不使用临时回复队列)时过滤来自其他回复的回复。 | 字符串 | |
streamMessageTypeEnabled (producer (advanced)) | 设置 StreamMessage 类型是否已启用。流类型的消息有效负载(如 files、InStream 等)将通过作为 BytesMessage 或 StreamMessage 发送。此选项控制将使用哪种类型。默认情况下,使用 BytesMessage 来强制整个消息有效负载读取到内存中。通过启用此选项,消息有效负载以块的形式读取到内存中,然后每个块都会写入 StreamMessage,直到没有更多数据。 | false | 布尔值 |
allowSerializedHeaders (advanced) | 控制是否包含序列化标头。仅在 transferExchange 为 true 时才适用。这要求对象可以序列化。Camel 将排除任何不可序列化的对象,并将它记录在 WARN 级别。 | false | 布尔值 |
artemisStreamingEnabled (advanced) | 是否针对 Apache Artemis 流模式进行优化。这可减少使用带有 JMS StreamMessage 类型的 Artemis 时的内存开销。只有在使用 Apache Artemis 时,才必须启用这个选项。 | 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 registry 中查找实际目的地)。 | DestinationResolver | |
errorHandler (advanced) | 指定在处理消息时引发任何未发现异常时要调用的 org.springframework.util.ErrorHandler。默认情况下,如果没有配置错误处理程序,则这些例外将在 WARN 级别记录。您可以配置日志记录级别,以及是否应使用 errorHandlerLoggingLevel 和 errorHandlerLogStack Trace 选项记录堆栈追踪。这样可以更容易配置,而不是需要对自定义错误处理程序进行代码。 | 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 Message 映射时,是否包含所有 JMSXxxx 属性。把它设置为 true 将包括 JMSXAppID 和 JMSXUserID 等属性。注:如果您使用自定义 headerFilterStrategy,则不会应用这个选项。 | false | 布尔值 |
jmsKeyFormatStrategy (advanced) | 编码和解码 JMS 密钥的可插拔策略,以便它们符合 JMS 规范。Camel 提供两个开箱即用的实现:default 和 passthrough。默认策略将安全地使用句点和连字符(. 和 -)。passthrough 策略将密钥保留原样。可用于不负责 JMS 标头密钥是否包含非法字符的 JMS 代理。您可以自行提供 org.apache.camel.component.jms.JmsKeyFormatStrategy 的实现,并使用 sVirt 表示法引用它。 Enum 值:
| JmsKeyFormatStrategy | |
mapJmsMessage (advanced) | 指定 Camel 是否应该自动将收到的 JMS 消息映射到合适的有效负载类型,如 javax.jms.TextMessage 到 String 等。 | true | 布尔值 |
maxMessagesPerTask (advanced) | 每个任务的消息数量。-1 代表没有限制。如果您为并发消费者使用范围(例如 min max),则可以使用此选项将值设为 100,以控制消费者在需要较少的工作时可以缩小的速度。 | -1 | int |
messageConverter (advanced) | 使用自定义 Spring org.springframework.jms.support.converter.MessageConverter,以便您可以控制如何映射到 javax.jms.Message。 | MessageConverter | |
messageCreatedStrategy (advanced) | 使用给定的 MessageCreatedStrategy,当 Camel 发送 JMS 消息时,Camel 创建 javax.jms.Message 对象的新实例。 | MessageCreatedStrategy | |
messageIdEnabled (advanced) | 发送时,指定是否应添加消息 ID。这只是对 JMS 代理的提示。如果 JMS 提供程序接受此提示,则这些消息必须将消息 ID 设置为 null;如果提供程序忽略提示,则必须将消息 ID 设置为其普通唯一值。 | true | 布尔值 |
messageListenerContainerFactory (advanced) | MessageListenerContainerFactory 的 registry ID,用于决定要使用消息的 org.springframework.jms.listener.AbstractMessageListenerContainer。设置此项将自动将 consumerType 设置为 Custom。 | MessageListenerContainerFactory | |
messageTimestampEnabled (advanced) | 指定在发送消息时是否默认启用时间戳。这只是对 JMS 代理的提示。如果 JMS 提供程序接受此提示,则这些消息必须将时间戳设置为零;如果提供程序忽略提示,则必须将时间戳设置为其正常值。 | true | 布尔值 |
pubSubNoLocal (advanced) | 指定是否禁止自己连接发布的消息的发送。 | false | 布尔值 |
receiveTimeout (advanced) | 接收消息的超时时间(以毫秒为单位)。 | 1000 | long |
recoveryInterval (advanced) | 指定恢复尝试之间的间隔,即当连接被刷新时,以毫秒为单位。默认值为 5000 ms,即 5 秒。 | 5000 | long |
requestTimeoutCheckerInterval (advanced) | 配置 Camel 在执行请求/通过 JMS 回复时应检查超时交换的频率。默认情况下,Camel 会每秒检查一次。但是,如果发生超时时,您必须更快地响应,那么您可以降低这个间隔,以便更频繁地检查。超时由选项 requestTimeout 决定。 | 1000 | long |
Sync (advanced) | 设置是否应严格使用同步处理。 | false | 布尔值 |
transferException (advanced) | 如果启用了且您使用 Request Reply messaging (InOut),并且 Exchange 失败在消费者端,则原因例外将作为 javax.jms.ObjectMessage 发回的响应。如果客户端是 Camel,则返回的例外将重新箭头。这样,您可以使用 Camel JMS 作为路由中的桥接 - 例如,使用持久性队列来启用强大的路由。请注意,如果您也启用了 transferExchange,这个选项将具有优先权。caught 异常需要可以被序列化。消费者端的原始例外可以嵌套在外部异常中,如 org.apache.camel.RuntimeCamelException。请谨慎使用它,因为数据正在使用 Java 对象序列化,要求接收者在类级别反序列化数据,这会强制在生产者和消费者之间进行强校准。 | false | 布尔值 |
transferExchange (advanced) | 您可以在有线线上传输交换,而不只是正文和标头。以下字段会被传输: 在 body, Out body, Fault body, In headers, Out headers, Fault header, Exchange properties, exchange exception.这要求对象可以序列化。Camel 将排除任何不可序列化的对象,并将它记录在 WARN 级别。您必须在制作者和消费者端启用这个选项,因此 Camel 知道有效负载是一个交换,而不是常规有效负载。请谨慎使用它,因为数据正在使用 Java 对象序列化,并且要求接收器能够在类级别上反序列化数据,这会强制在需要使用兼容 Camel 版本的生产者和消费者之间进行强大的协调。 | false | 布尔值 |
useMessageIDAsCorrelationID (advanced) | 指定 JMSMessageID 是否应该始终用作 InOut 消息的 JMSCorrelationID。 | false | 布尔值 |
waitForProvisionCorrelationToBeUpdatedCounter (advanced) | 在执行 request/reply over JMS 以及启用了 useMessageIDAsCorrelationID 时,等待 provisional correlation id 被更新到实际关联 ID 的次数。 | 50 | int |
waitForProvisionCorrelationToBeUpdatedThreadSleepingTime (advanced) | 等待置备关联 ID 时每次休眠的时间间隔(以秒为单位)。 | 100 | long |
errorHandlerLoggingLevel (logging) | 允许为日志记录 uncaught 异常配置默认 errorHandler 日志记录级别。 Enum 值:
| WARN | LoggingLevel |
errorHandlerLogStackTrace (logging) | 允许通过默认错误处理程序来控制是否应记录 stacktraces。 | true | 布尔值 |
密码 (安全) | 与 ConnectionFactory 一起使用的密码。您还可以直接在 ConnectionFactory 上配置用户名/密码。 | 字符串 | |
用户名 (安全) | 与 ConnectionFactory 一起使用的用户名。您还可以直接在 ConnectionFactory 上配置用户名/密码。 | 字符串 | |
Transacted (transaction) | 指定是否使用转换模式。 | false | 布尔值 |
TransactedInOut (transaction) | 指定 InOut 操作(请求回复)是否默认使用 transacted 模式,如果此标志被设置为 true,则 Spring JmsTemplate 将把 sessionTransacted 设置为 true,而 confirmMode 作为转换用于 InOut 操作。请注意:在 JTA 事务中,传递给 createQueue 的参数不会考虑 createTopic 方法。根据 Java EE 事务上下文,容器对这些值做出自己的决策。类似地,这些参数不会考虑本地管理的事务,因为 Spring JMS 在这种情况下在现有 JMS 会话上运行。在受管事务外运行时,将此标志设置为 true 将使用简短的本地 JMS 事务,并在存在受管事务(除 XA 事务之外)时同步的本地 JMS 事务。这与主事务一起管理本地 JMS 事务(可能是原生 JDBC 事务)的影响,在主事务后 JMS 事务提交右侧的 JMS 事务。 | false | 布尔值 |
lazyCreateTransactionManager (transaction (advanced)) | 如果为 true,Camel 将创建一个 JmsTransactionManager,如果没有在选项 transacted=true 时注入 transactionManager。 | true | 布尔值 |
transactionManager (transaction (advanced)) | 要使用的 Spring 事务管理器。 | PlatformTransactionManager | |
transactionName (transaction (advanced)) | 要使用的事务的名称。 | 字符串 | |
transactionTimeout (transaction (advanced)) | 如果使用转换模式,事务的超时值(以秒为单位)。 | -1 | int |