5.2. AMQP 选项
您可以在目的地名称后指定 JMS 组件的所有配置选项。
AMQP 组件支持下面列出的 81 选项。
名称 | 描述 | 默认 | 类型 |
---|---|---|---|
配置 (高级) | 使用共享的 JMS 配置 | JmsConfiguration | |
acceptMessagesWhile Stopping (consumer) | 指定使用者接受消息在停止时是否指定。如果您在运行时启动和停止 JMS 路由,则请考虑启用这个选项,同时队列上仍有消息 enqueued。如果这个选项为 false,并且您停止了 JMS 路由,则消息可能会被拒绝,并且 JMS 代理必须尝试重定位,但再次再次可能被拒绝,最后消息可能会在 JMS 代理上的死信队列移动。为了避免这一建议启用这个选项。 | false | 布尔值 |
allowReplyManagerQuick Stop (consumer) | 如果 JmsConfiguration#isAcceptMessagesWhileStopping 在启用 JmsConfiguration#isAcceptMessagesWhileStopping 时,并且 org.apache.camel.Camel.CamelContext 当前已经停止。常规 JMS 用户默认启用这一快速停止功能,但为了回复经理,您必须启用此标志。 | false | 布尔值 |
acknowledgementMode (consumer) | JMS 确认模式定义为 Integer。允许您将特定于供应商的扩展设置为 acknowledgment 模式。对于常规模式,最好使用 acknowledgementModeName。 | int | |
eagerLoadingOf Properties (消费者) | 在加载消息时立即加载 JMS 属性,因为可能不需要 JMS 属性,但有时可能会遇到底层 JMS 提供程序及使用 JMS 属性的早期问题。 | false | 布尔值 |
acknowledgementModeName (consumer) | JMS 确认名称之一: SESSION_TRANSACTED、CLIENT_ACKNOWLEDGE、AUTO_ACKNOWLEDGE、DUPS_OK_ACKNOWLEDGE | AUTO_ ACKNOWLEDGE | 字符串 |
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 用于独占或共享 w/ replyToSelectorName。以及在没有 replyToSelectorName 的情况下共享的 CACHE_SESSION。有些 JMS 代理(如 IBM WebSphere)可能需要设置 replyToCacheLevelName=CACHE_NONE 才能工作。注:如果使用临时队列,则不允许使用 CACHE_NONE,且必须使用更高的值,如 CACHE_CONSUMER 或 CACHE_SESSION。 | 字符串 | |
clientId (common) | 设置要使用的 JMS 客户端 ID。请注意,这个值必须是唯一的,且只能供单个 JMS 连接实例使用。通常只有持久主题订阅才是必需的。如果使用 Apache ActiveMQ,您可以改为使用虚拟主题。 | 字符串 | |
concurrentConsumers (consumer) | 指定使用 JMS 时的默认并发用户数(不用于请求/相对 JMS)。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。当执行请求/相对于 JMS 时,选项回复ToConcurrentConsumers 用于控制回复消息监听器上的并发用户数量。 | 1 | int |
replyToConcurrent Consumers (producer) | 指定在进行请求/相对于 JMS 时的默认并发用户数量。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。 | 1 | int |
connectionFactory (common) | 要使用的连接工厂。必须在组件或端点上配置连接工厂。 | ConnectionFactory | |
username (security) | 用于 ConnectionFactory 的用户名。您还可以直接在 ConnectionFactory 上配置用户名/密码。 | 字符串 | |
密码 (安全) | 要用于 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。默认情况下,如果没有配置错误处理程序,则这些异常会记录在 WARN 级别。您可以配置日志记录级别,以及是否应使用 errorHandlerLoggingLevel 和 errorHandlerLogStackTrace 选项记录堆栈追踪。这样可以更容易配置,而不是对自定义错误处理程序进行编码。 | ErrorHandler | |
errorHandlerLogging Level (logging) | 允许配置默认错误处理程序日志记录级别,以记录异常。 | WARN | LoggingLevel |
errorHandlerLogStack Trace (logging) | 允许控制是否应该记录堆栈追踪,默认错误处理程序。 | true | 布尔值 |
explicitQosEnabled (producer) | 设定在发送消息时应使用 deliveryMode、priority 或 timeToLive 服务质量。这个选项基于 Spring 的 JmsTemplate。deliveryMode、priority 和 timeToLive 选项应用到当前的端点。这与 preserveMessageQos 选项不同,该选项以消息粒度运行,从 Camel In message 标头专门读取 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) | 指定在使用 request/reply over 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 到字符串等。 | true | 布尔值 |
messageIdEnabled (advanced) | 发送时,指定是否应添加消息 ID。这只是 JMS 代理的提示。如果 JMS 提供程序接受此提示,这些消息必须将消息 ID 设置为 null;如果提供商忽略 hint,消息 ID 必须设置为其正常的唯一值 | true | 布尔值 |
messageTimestampEnabled (advanced) | 指定在发送消息时是否应默认启用时间戳。这只是一个到 JMS 代理的提示。如果 JMS 供应商接受这个 hint,这些消息必须将时间戳设置为零。如果供应商忽略了提示,时间戳必须设置为其正常值 | true | 布尔值 |
alwaysCopyMessage (producer) | 如果为 true,则 Camel 将始终将消息的 JMS 消息副本传递给发送的制作者。在某些情况下,需要复制消息,例如当设置了 replyToDestinationSelectorName 时(通常,Camel 会将 alwaysCopyMessage 选项设置为 true,如设置了 replyToDestinationSelectorName) | false | 布尔值 |
使用MessageIDAs CorrelationID (advanced) | 指定 JMSMessageID 是否应该始终用作 InOut 消息的 JMSCorrelationID。 | false | 布尔值 |
priority (producer) | 高于 1 的值在发送时指定消息优先级(其中 0 是最低优先级),以及 9 是最高优先级。还必须启用显式QosEnabled 选项,才能使此选项生效。 | 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 |
transacted (transaction) | 指定是否使用翻译模式 | false | 布尔值 |
lazyCreateTransaction Manager (transaction) | 如果为 true,如果选项 transacted=true 中没有注入事务管理器,Camel 会创建一个 JmsTransactionManager。 | true | 布尔值 |
transactionManager (transaction) | 要使用的 Spring 事务管理器。 | platformTransaction Manager | |
transactionName (transaction) | 要使用的事务的名称。 | 字符串 | |
transactionTimeout (transaction) | 事务的超时值(以秒为单位)。 | -1 | int |
testConnectionOn Startup (common) | 指定是否在启动时测试连接。这可确保当 Camel 启动时,所有 JMS 用户都具有与 JMS 代理的有效连接。如果无法授予连接,Camel 会在启动时抛出异常。这样可确保 Camel 没有启动失败的连接。JMS 生产商也进行了测试。 | 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) | 配置在通过 JMS 进行请求时,Camel 应该检查超时交换的频率。默认情况下,Camel 会检查每秒一次。但是,如果发生超时时您必须更快地做出反应,那么您可以降低这个间隔,以更频繁地检查。超时由选项 requestTimeout 决定。 | 1000 | long |
transferExchange (advanced) | 您可以通过线路传输交换,而不只是正文和标头。传输以下字段如下:正文、出站正文、容错正文、入口、出口标头、容错标头、交换属性、交换异常。这要求对象是序列化的。Camel 将排除任何非序列化对象,并在 WARN 级别记录它。您必须在制作者和消费者端启用此选项,因此 Camel 知道有效负载是 Exchange,而非常规有效负载。 | false | 布尔值 |
transferException (高级) | 如果启用并且您正在使用 Request Reply messaging (InOut),并且一个 Exchange 在使用者端失败,则会导致 Exception 发回为 javax.jms.ObjectMessage。如果客户端是 Camel,则返回的 Exception 会被重新箭头。这样,您可以使用 Camel JMS 作为路由中的网桥 - 例如,使用持久性队列来启用可靠的路由。请注意,如果您也启用了 transferExchange,则此选项将具有优先权。请注意的异常需要是序列化的。使用者端的原始例外可以包装在外部异常中,如 org.apache.camel.RuntimeCamelException (返回到制作者)。 | false | 布尔值 |
transferFault (advanced) | 如果启用且您使用 Request Reply messaging (InOut)和 Exchange failed,在消费者端使用 SOAP 故障(而非例外),则 Message#isFault ()上的故障标记将重新发送作为带有键 org.apache.camelcomponent.jms.JmsConstants#JMS_TRATRATRATRATER_JMS_TRATER_JMS 头条的 JMS 标头。如果客户端是 Camel,则返回的 fault 标志将在 org.apache.camel.Message#setFault (布尔值)上设置。在使用支持故障的 Camel 组件(如 cxf 或 spring-ws)时,您可能需要启用此功能。 | 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 时用于回复队列的策略。可能的值有:Trimporary、Shared 或 Exclusive。默认情况下,Camel 将使用临时队列。但是,如果已经配置了 replyTo,则默认使用 Shared。此选项允许您使用专用队列而不是共享队列。请参阅 Camel JMS 文档了解更多详情,特别是有关在集群环境中运行时所造成影响的备注,以及共享回复队列的性能比其 alternatives Temporary 和 Exclusive 的性能有不同。 | ReplyToType | |
preserveMessageQos (producer) | 设置为 true,如果要使用消息中指定的 QoS 设置发送消息,而不是 JMS 端点上的 QoS 设置。以下三个标头被视为 JMSPriority、JMSDeliveryMode 和 JMSExpiration。您可以提供全部或部分功能。如果没有提供,Camel 将回退为使用来自端点的值。因此,在使用这个选项时,标头会覆盖端点中的值。相反,显式QosEnabled 选项只会使用在端点上设置的选项,而不是消息标头中的值。 | false | 布尔值 |
asyncConsumer (consumer) | JmsConsumer 是否异步处理 Exchange。如果启用,则 JmsConsumer 可能会从 JMS 队列获取下一个消息,而上一消息正在异步处理(通过异步路由引擎)。这意味着,消息可以被严格处理,按顺序处理。如果禁用(默认),则在 JmsConsumer 将从 JMS 队列中获取下一个消息之前,将完全处理 Exchange。请注意,如果已启用翻译,则 asyncConsumer=true 不会异步运行,因为事务必须同步执行(Camel 3.0 可能支持 async 事务)。 | false | 布尔值 |
allowNullBody (producer) | 是否允许在没有正文的情况下发送消息。如果此选项为 false,并且消息正文为空,则将引发 JMSException。 | true | 布尔值 |
includeSentJMS MessageID (producer) | 仅适用于使用 InOnly 发送到 JMS 目的地(请触发和忘记)。启用此选项将丰富的 Camel Exchange 与 JMS 客户端在消息发送到 JMS 目的地时使用的实际 JMSMessageID 一起丰富。 | false | 布尔值 |
includeAllJMSX Properties (advanced) | 从 JMS 到 Camel 消息映射时是否包括所有 JMSXxxx 属性。将其设置为 true 将包括 JMSXAppID 和 JMSXUserID 等属性。注:如果您使用自定义 headerFilterStrategy,则这个选项不会应用。 | false | 布尔值 |
默认TaskExecutor Type (使用者) | 指定在 DefaultMessageListenerContainer 中使用哪些默认 TaskExecutor 类型,用于使用者端点和制作者端点的 ReplyTo consumer。可能的值有: SimpleAsync (使用 Spring 的 SimpleAsyncTaskExecutor)或 ThreadPool (使用具有最优值的 Spring 的 ThreadPoolTaskExecutor)。如果没有设置,则默认为之前的行为,它将缓存的线程池用于消费者端点和 SimpleAsync 回复消费者消费者。建议使用 ThreadPool 以减少弹性配置中的线程回收,并动态增加和减少并发用户。 | DefaultTaskExecutor Type | |
jmsKeyFormatStrategy (advanced) | 用于编码和解码 JMS 密钥的可插拔策略,以便它们符合 JMS 规范。Camel 提供了两个开箱即用的实现:默认和直通。默认策略将安全汇总点和连字符(. 和 -)。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 发送 JMS 消息时,将在 Camel 创建新实例 javax.jms.Message 对象时来调用。 | MessageCreatedStrategy | |
waitForProvision CorrelationToBeUpdated Counter (advanced) | 在对 JMS 进行请求/恢复请求时,等待 provisional 关联 id 会被更新为实际关联 id 的次数,以及选项 useMessageIDAsCorrelationID。 | 50 | int |
waitForProvision CorrelationToBeUpdated ThreadSleepingTime (advanced) | millis 在等待 provisional correlation id 被更新期间,每次处于睡眠状态的时间间隔。 | 100 | long |
correlationProperty (producer) | 使用此 JMS 属性将消息与 InOut Exchange 模式(request-reply)而不是 JMSCorrelationID 属性关联。这样,您可以使用 JMSCorrelationID JMS 属性将消息与不关联消息的系统交换。如果未使用 JMSCorrelationID,则 Camel 将不会被使用或设置。如果未在同一名称下的消息标题中提供,则生成此指定属性的值。 | 字符串 | |
subscriptionDurable (consumer) | 设置是否使订阅持久。要使用的持久订阅名称可以通过 subscriptionName 属性指定。默认为 false。将其设置为 true 以注册持久的订阅,通常与 subscriptionName 值结合使用(除非您的消息监听器类名称足够好作为订阅名称)。只有侦听主题(pub-sub 域)时,这种方法才会切换到 pubSubDomain 标志。 | false | 布尔值 |
subscriptionShared (consumer) | 设置是否使订阅共享。可以通过 subscriptionName 属性指定要使用的共享订阅名称。默认为 false。将其设置为 true 以注册共享订阅,通常与 subscriptionName 值结合使用(除非您的消息监听程序类名称已足够符合订阅名称)。请注意,共享订阅也可能是持久的,因此此标志也可以(并经常将)与订阅相整合。只有侦听主题(pub-sub 域)时,这种方法才会切换到 pubSubDomain 标志。需要 JMS 2.0 兼容消息代理。 | false | 布尔值 |
subscriptionName (consumer) | 设置要创建的订阅的名称。要应用一个带有共享或 durable 订阅的主题(pub-sub 域)。订阅名称需要在这个客户端的 JMS 客户端 ID 中唯一。default 是指定消息监听程序的类名称。注:每个订阅只允许 1 个并发使用者(默认是此消息监听器容器),但共享订阅除外(需要 JMS 2.0)。 | 字符串 | |
streamMessageType Enabled (producer) | 设定是否启用 StreamMessage 类型。消息有效负载的流传输类型(如文件、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 | 布尔值 |
AMQP 端点使用 URI 语法配置:
amqp:destinationType:destinationName
使用以下路径和查询参数:
5.2.1. 路径名(2 参数):
名称 | 描述 | 默认 | 类型 |
---|---|---|---|
destinationType | 要使用的目的地种类 | 队列 | 字符串 |
destinationName | 用作目的地的队列或主题 所需的 名称 | 字符串 |