5.3. Spring Boot Auto-Configuration
组件支持 81 选项,如下所列。
| Name | 描述 | 默认值 | 类型 | 
|---|---|---|---|
| camel.component.amqp.accept-messages-while-stopping | 指定消费者在停止时是否接受消息。如果您在运行时启动和停止 JMS 路由,同时队列中仍然有消息排队,您可以考虑启用此选项。如果此选项为 false,并且您停止 JMS 路由,则消息可能会被拒绝,并且 JMS 代理必须尝试恢复,并且再次可能被拒绝,最后该消息可能在 JMS 代理的死信队列中移动。为避免这种情况,建议启用这个选项。 | false | 布尔值 | 
| camel.component.amqp.acknowledgement-mode | JMS 确认模式定义为整数。允许您为确认模式设置特定于供应商的扩展。对于常规模式,最好改为使用 confirmmentModeName。 | 整数 | |
| camel.component.amqp.acknowledgement-mode-name | JMS 确认名称,即 SESSION_TRANSACTED、CLIENT_ACKNOWLEDGE、AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE | AUTO_ 确认 | 字符串 | 
| camel.component.amqp.allow-additional-headers | 此选项用于允许其他标头,这些标头可能具有根据 JMS 规格无效的值。例如,一些消息系统(如 WMQ)使用前缀 JMS_IBM_MQMD_ 包含带有字节数组或其他无效类型的值的标头名称。您可以指定用逗号分开的多个标头名称,并使用 作为后缀进行通配符匹配。 | 字符串 | |
| camel.component.amqp.allow-null-body | 是否允许发送没有正文的消息。如果此选项为 false,并且消息正文为 null,则抛出 JMSException。 | true | 布尔值 | 
| camel.component.amqp.allow-reply-manager-quick-stop | 在 request-reply 消息传递的回复管理器中使用的 DefaultMessageListenerContainer 是否允许 DefaultMessageListenerContainer.runningAllowed 标志快速停止,以防 JmsConfigurationBuildisAcceptMessagesWhileStopping 已启用,并且 org.apache.camel.CamelContext 当前已停止。默认情况下,在常规 JMS 用户中启用此快速停止功能,但要启用回复管理器,您必须启用此标志。 | false | 布尔值 | 
| camel.component.amqp.always-copy-message | 如果为 true,Camel 会在传递给制作者以进行发送时始终生成消息的 JMS 消息副本。在某些情况下需要复制消息,例如当设置了 replyToDestinationSelectorName 时(如果设置了 replyToDestinationSelectorName,Camel 会将 alwaysCopyMessage 选项设置为 true,如果设置了 replyToDestinationSelectorName ) | false | 布尔值 | 
| camel.component.amqp.async-consumer | JmsConsumer 是否异步处理 Exchange。如果启用,JmsConsumer 可能会从 JMS 队列中选择下一个消息,而前面的消息异步处理(通过 Asynchronous Routing Engine)。这意味着消息可能没有完全严格按照顺序进行处理。如果禁用(作为默认),则在 JmsConsumer 将从 JMS 队列获取下一个消息之前完全处理 Exchange。请注意,如果启用了 transacted,则 asyncConsumer=true 不会异步运行,因为事务必须同步执行(Camel 3.0 可能支持 async 事务)。 | false | 布尔值 | 
| camel.component.amqp.async-start-listener | 在启动路由时,是否异步启动 JmsConsumer 消息监听程序。例如,如果 JmsConsumer 无法连接到远程 JMS 代理,则在重试和/或故障转移时可能会阻止。这将导致 Camel 在启动路由时阻止。通过将此选项设置为 true,您将让路由启动,而 JmsConsumer 以异步模式使用专用线程连接到 JMS 代理。如果使用这个选项,请注意,如果无法建立连接,那么会记录异常在 WARN 级别,消费者将无法接收消息;然后您可以重启路由来重试。 | false | 布尔值 | 
| camel.component.amqp.async-stop-listener | 在停止路由时,是否异步停止 JmsConsumer 消息监听程序。 | false | 布尔值 | 
| camel.component.amqp.auto-startup | 指定消费者容器是否应自动启动。 | true | 布尔值 | 
| camel.component.amqp.cache-level | 根据底层 JMS 资源的 ID 设置缓存级别。如需了解更多详细信息,请参阅 cacheLevelName 选项。 | 整数 | |
| camel.component.amqp.cache-level-name | 按名称为底层 JMS 资源设置缓存级别。可能的值有:CACHE_AUTO、CACHE_CONNECTION、CACHE_CONSUMER、CACHE_NONE 和 CACHE_SESSION。默认设置为 CACHE_AUTO。如需更多信息,请参阅 Spring 文档和事务缓存级别。 | CACHE_AUTO | 字符串 | 
| camel.component.amqp.client-id | 设置要使用的 JMS 客户端 ID。请注意,如果指定,这个值必须是唯一的,且只能由单个 JMS 连接实例使用。它通常只需要 durable 主题订阅。如果使用 Apache ActiveMQ,您可能更喜欢使用虚拟主题。 | 字符串 | |
| camel.component.amqp.concurrent-consumers | 指定从 JMS 消耗时的默认并发消费者数(而不是通过 JMS 进行请求/回复)。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。当通过 JMS 进行请求/回复时,会使用选项 replyToConcurrentConsumers 来控制回复消息监听器上的并发用户数量。 | 1 | 整数 | 
| camel.component.amqp.configuration | 使用共享的 JMS 配置。选项是 org.apache.camel.component.jms.JmsConfiguration 类型。 | 字符串 | |
| camel.component.amqp.connection-factory | 要使用的连接工厂。必须在组件或端点上配置连接工厂。选项是 javax.jms.ConnectionFactory 类型。 | 字符串 | |
| camel.component.amqp.correlation-property | 使用此 JMS 属性来关联 InOut Exchange pattern (request-reply)中的消息,而不是 JMSCorrelationID 属性。这样,您可以将消息与不使用 JMSCorrelationID JMS 属性关联消息的系统交换。如果使用的 JMSCorrelationID 不会被 Camel 使用或设置。如果没有在相同名称下的消息标头中提供,则会生成此处 named 属性的值。 | 字符串 | |
| camel.component.amqp.default-task-executor-type | 指定在 DefaultMessageListenerContainer 中使用的默认 TaskExecutor 类型,用于消费者端点和生成者端点的 ReplyTo consumer。可能的值: SimpleAsync (使用 Spring 的 SimpleAsyncTaskExecutor)或 ThreadPool (使用 Spring 的 ThreadPoolTaskExecutor 带有最佳值 - 缓存线程池)。如果没有设置,则默认为之前的行为,它使用缓存的线程池作为消费者端点,而 SimpleAsync 用于回复消费者。建议使用 ThreadPool,以动态增加和减少并发消费者在弹性配置中减少线程回收。 | DefaultTaskExecutor Type | |
| camel.component.amqp.delivery-mode | 指定要使用的交付模式。Possibles 值是由 javax.jms.DeliveryMode 定义的值。NON_PERSISTENT = 1 和 PERSISTENT = 2. | 整数 | |
| camel.component.amqp.delivery-persistent | 指定是否默认使用持久性交付。 | true | 布尔值 | 
| camel.component.amqp.destination-resolver | 可插拔 org.springframework.jms.support.destination.DestinationResolver,允许您使用您自己的解析器(例如,在 JNDI 注册表中查找实际目的地)。选项是一个 org.springframework.jms.support.destination.DestinationResolver 类型。 | 字符串 | |
| camel.component.amqp.durable-subscription-name | 用于指定持久主题订阅的持久化订阅者名称。还必须配置 clientId 选项。 | 字符串 | |
| camel.component.amqp.eager-loading-of-properties | 加载消息时,启用强制加载 JMS 属性,这通常效率低效,因为 JMS 属性可能并不需要,但有时可以提前捕获与底层 JMS 提供程序的任何问题,以及使用 JMS 属性 | false | 布尔值 | 
| camel.component.amqp.enabled | 启用 amqp 组件 | true | 布尔值 | 
| camel.component.amqp.error-handler | 指定在处理消息时引发任何未捕获的异常时调用的 org.springframework.util.ErrorHandler。默认情况下,如果没有配置 errorHandler,这些例外将在 WARN 级别记录。您可以配置日志记录级别,并使用 errorHandlerLoggingLevel 和 errorHandlerLogStackTrace 选项记录堆栈 trace。这样可以更轻松地配置,而不是对自定义 errorHandler 进行编码。选项是一个 org.springframework.util.ErrorHandler 类型。 | 字符串 | |
| camel.component.amqp.error-handler-log-stack-trace | 允许由默认的 errorHandler 控制是否应记录堆栈追踪。 | true | 布尔值 | 
| camel.component.amqp.error-handler-logging-level | 允许为日志记录未捕获的异常配置默认的 errorHandler 日志记录级别。 | LoggingLevel | |
| camel.component.amqp.exception-listener | 指定正在获得任何底层 JMS 异常通知的 JMS Exception Listener。选项是 javax.jms.ExceptionListener 类型。 | 字符串 | |
| camel.component.amqp.explicit-qos-enabled | 设置在发送消息时应使用 deliveryMode、priority 或 timeToLive qualities。这个选项基于 Spring 的 JmsTemplate。deliveryMode、priority 和 timeToLive 选项应用到当前端点。这与 preserveMessageQos 选项相反,它以消息粒度运行,从 Camel In 消息标头读取 QoS 属性。 | false | 布尔值 | 
| camel.component.amqp.expose-listener-session | 指定侦听器会话是否应该在消耗消息时公开。 | false | 布尔值 | 
| camel.component.amqp.force-send-original-message | 使用 mapJmsMessage=false Camel 时,如果您涉及路由期间的标头(get 或 set),则会创建一个新的 JMS 消息来发送到新的 JMS 目的地。将此选项设置为 true,以强制 Camel 发送收到的原始 JMS 消息。 | false | 布尔值 | 
| camel.component.amqp.format-date-headers-to-iso8601 | 设置日期标头是否应根据 ISO 8601 标准进行格式化。 | false | 布尔值 | 
| camel.component.amqp.header-filter-strategy | 使用自定义 org.apache.camel.spi.HeaderFilterStrategy 过滤到 Camel 消息的标头。选项是一个 org.apache.camel.spi.HeaderFilterStrategy 类型。 | 字符串 | |
| camel.component.amqp.idle-consumer-limit | 指定在任意给定时间允许闲置的用户数量的限制。 | 1 | 整数 | 
| camel.component.amqp.idle-task-execution-limit | 指定闲置执行接收任务的限值,没有在其执行中收到任何消息。如果达到这个限制,任务将关闭并保持接收其他执行任务(如果是动态调度,请参阅 maxConcurrentConsumers 设置)。Spring 中提供了额外的文档。 | 1 | 整数 | 
| camel.component.amqp.include-all-j-m-s-x-properties | 从 JMS 映射到 Camel 消息时,是否要包含所有 JMSXxxx 属性。把它设置为 true 将包括 JMSXAppID 和 JMSXUserID 等属性。注: 如果您使用自定义 headerFilterStrategy,则不会应用这个选项。 | false | 布尔值 | 
| camel.component.amqp.include-sent-j-m-s-message-i-d | 仅在使用 InOnly (如触发和忘记)发送到 JMS 目的地时才适用。启用此选项将使用实际的 JMSMessageID 增强 Camel Exchange,当消息发送到 JMS 目的地时,由 JMS 客户端使用。 | false | 布尔值 | 
| camel.component.amqp.jms-key-format-strategy | 可插拔编码和解码 JMS 密钥策略,以便它们能够与 JMS 规范兼容。Camel 提供了两个开箱即用的实现:default 和 passthrough。默认策略可以安全地放入点和连字符(. 和 -)。passthrough 策略将密钥保留原样。可用于 JMS 代理,其不小心是 JMS 标头键是否包含非法字符。您可以提供自己的 org.apache.camel.component.jms.JmsKeyFormatStrategy 的实现,并使用 # 表示法引用它。选项是 org.apache.camel.component.jms.JmsKeyFormatStrategy 类型。 | 字符串 | |
| camel.component.amqp.jms-operations | 允许您使用您自己的 org.springframework.jms.core.JmsOperations 接口实施。Camel 使用 JmsTemplate 作为默认值。可用于测试目的,但不按 spring API 文档中所述使用。选项是一个 org.springframework.jms.core.JmsOperations 类型。 | 字符串 | |
| camel.component.amqp.lazy-create-transaction-manager | 如果为 true,如果选项 transacted=true 时没有注入的 transactionManager,则 Camel 将创建一个 JmsTransactionManager。 | true | 布尔值 | 
| camel.component.amqp.map-jms-message | 指定 Camel 是否应该自动将收到的 JMS 消息映射到合适的有效负载类型,如 javax.jms.TextMessage 到 String 等。 | true | 布尔值 | 
| camel.component.amqp.max-concurrent-consumers | 指定从 JMS 消耗时的最大并发消费者数(而不是通过 JMS 进行请求/回复)。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。当通过 JMS 进行请求/回复时,选项 replyToMaxConcurrentConsumers 用于控制回复消息监听器上的并发用户数量。 | 整数 | |
| camel.component.amqp.max-messages-per-task | 每个任务的消息数量。-1 代表没有限制。如果您将范围用于并发消费者(如 min max),则可以使用此选项将值设置为 eg 100,以控制消费者在需要较少的工作时缩小的速度。 | -1 | 整数 | 
| camel.component.amqp.message-converter | 要使用自定义 Spring org.springframework.jms.support.converter.MessageConverter,以便您可以控制如何映射到 javax.jms.Message。选项是 org.springframework.jms.support.converter.MessageConverter 类型。 | 字符串 | |
| camel.component.amqp.message-created-strategy | 要使用给定的 MessageCreatedStrategy,后者在 Camel 在 Camel 发送 JMS 消息时创建 javax.jms.Message 对象的新实例。选项是 org.apache.camel.component.jms.MessageCreatedStrategy 类型。 | 字符串 | |
| camel.component.amqp.message-id-enabled | 发送时,指定是否应添加消息 ID。这只是 JMS 代理的提示。如果 JMS 提供程序接受此提示,这些消息必须将消息 ID 设为 null;如果供应商忽略提示,则必须将消息 ID 设置为其普通唯一值 | true | 布尔值 | 
| camel.component.amqp.message-timestamp-enabled | 指定在发送消息时是否默认启用时间戳。这只是 JMS 代理的提示。如果 JMS 提供程序接受此提示,这些消息必须设为零;如果供应商忽略提示,则必须将时间戳设置为正常值 | true | 布尔值 | 
| camel.component.amqp.password | 与 ConnectionFactory 搭配使用的密码。您还可以直接在 ConnectionFactory 上配置用户名/密码。 | 字符串 | |
| camel.component.amqp.preserve-message-qos | 如果要使用消息上指定的 QoS 设置发送消息,而不是 JMS 端点上的 QoS 设置,则设置为 true。以下三个标头被视为 JMSPriority、JMSDeliveryMode 和 JMSExpiration。您可以提供所有或只提供其中一些。如果没有提供,Camel 将回退到使用端点中的值。因此,在使用此选项时,标头会覆盖来自端点的值。相反,explicitQosEnabled 选项只会使用端点上设置的选项,而不使用消息标头中设置的值。 | false | 布尔值 | 
| camel.component.amqp.priority | 大于 1 的值在发送时指定消息优先级(其中 0 是最低优先级,9 是最高)。必须启用 explicitQosEnabled 选项,才能使此选项有任何效果。 | 4 | 整数 | 
| camel.component.amqp.pub-sub-no-local | 指定是否禁止发送由其自身连接发布的消息。 | false | 布尔值 | 
| camel.component.amqp.queue-browse-strategy | 在浏览队列时使用自定义 QueueBrowseStrategy。选项是 org.apache.camel.component.jms.QueueBrowseStrategy 类型。 | 字符串 | |
| camel.component.amqp.receive-timeout | 接收消息的超时时间(以毫秒为单位)。 | 1000 | Long | 
| camel.component.amqp.recovery-interval | 指定恢复尝试之间的间隔,例如当连接被刷新时,以毫秒为单位。默认值为 5000 ms,即 5 秒。 | 5000 | Long | 
| camel.component.amqp.reply-on-timeout-to-max-concurrent-consumers | 指定在通过 JMS 使用请求/回复时超时时继续路由的最大并发消费者数。 | 1 | 整数 | 
| camel.component.amqp.reply-to-cache-level-name | 在通过 JMS 进行请求/回复时,按名称设置缓存级别。这个选项只适用于使用固定回复队列(而不是临时)。Camel 默认将使用:CACHE_CONSUMER 用于 exclusive 或 shared w/ replyToSelectorName。和 CACHE_SESSION 用于在没有 replyToSelectorName 的情况下共享。有些 JMS 代理(如 IBM WebSphere)可能需要设置 replyToCacheLevelName=CACHE_NONE 才能工作。注意:如果不使用临时队列,则不允许 CACHE_NONE,且您必须使用更高的值,如 CACHE_CONSUMER 或 CACHE_SESSION。 | 字符串 | |
| camel.component.amqp.reply-to-concurrent-consumers | 指定通过 JMS 进行请求/回复时的默认并发消费者数量。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。 | 1 | 整数 | 
| camel.component.amqp.reply-to-max-concurrent-consumers | 指定通过 JMS 使用请求/回复时的最大并发消费者数。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。 | 整数 | |
| camel.component.amqp.reply-to-type | 允许明确指定在通过 JMS 进行请求/回复时,用于 replyTo 队列的策略。可能的值有: Temporary、Shared 或 Exclusive。默认情况下,Camel 将使用临时队列。但是,如果配置了 replyTo,则默认使用 Shared。此选项允许您使用专用队列而不是共享队列。如需了解更多详细信息,请参阅 Camel JMS 文档,特别是有关在集群环境中运行时所影响的备注,而共享回复队列的性能比其 alternatives Temporary 和 Exclusive 性能较低。 | ReplyToType | |
| camel.component.amqp.request-timeout | 使用 InOut Exchange Pattern 时等待回复的超时(以毫秒为单位)。默认值为 20 秒。您可以包含标头 CamelJmsRequestTimeout 来覆盖此端点配置的超时值,因此每个消息都有单独的超时值。另请参阅 requestTimeoutCheckerInterval 选项。 | 20000 | Long | 
| camel.component.amqp.request-timeout-checker-interval | 配置 Camel 在通过 JMS 进行请求/回复时应检查超时的频率。默认情况下,Camel 检查每秒一次。但是,如果发生超时时必须更快地响应,则可以降低这个间隔,以便更频繁地检查。超时由 option requestTimeout 决定。 | 1000 | Long | 
| camel.component.amqp.resolve-property-placeholders | 组件是否应在启动时解析属性占位符。只有 String 类型的属性可以使用属性占位符。 | true | 布尔值 | 
| camel.component.amqp.stream-message-type-enabled | 设置是否启用 StreamMessage 类型。文件、InputStream 等消息有效负载(如文件、InputStream 等)将通过 BytesMessage 或 StreamMessage 发送。此选项控制将使用哪种类型。默认情况下,使用 BytesMessage 来强制将整个消息有效负载读取到内存中。通过启用此选项,消息有效负载以块的形式读取内存,然后每个块写入 StreamMessage,直到没有更多数据。 | false | 布尔值 | 
| camel.component.amqp.subscription-durable | 设置是否使订阅持久。要使用的持久订阅名称可以通过 subscriptionName 属性指定。默认值为 false。把它设置为 true 以注册持久化订阅,通常与 subscriptionName 值结合使用(除非您的消息监听程序类名称足以满足订阅名称)。仅在侦听主题(pub-sub domain)时具有意义,因此此方法也会切换 pubSubDomain 标志。 | false | 布尔值 | 
| camel.component.amqp.subscription-name | 设置要创建的订阅的名称。当具有共享或持久化订阅的主题(pub-sub domain)时应用。订阅名称需要在此客户端的 JMS 客户端 id 中唯一。default 是指定消息监听程序的类名称。注意:除了共享订阅(需要 JMS 2.0)外,每个订阅只允许 1 个并发消费者(此消息监听程序容器的默认值)。 | 字符串 | |
| camel.component.amqp.subscription-shared | 设置是否使订阅共享。要使用的共享订阅名称可以通过 subscriptionName 属性指定。默认值为 false。把它设置为 true 以注册共享订阅,通常与 subscriptionName 值结合使用(除非您的消息监听程序类名称足以满足订阅名称)。请注意,共享订阅也可能是持久的,因此此标志也可以与 subscriptionDurable 结合使用。仅在侦听主题(pub-sub domain)时具有意义,因此此方法也会切换 pubSubDomain 标志。需要兼容 JMS 2.0 的消息代理。 | false | 布尔值 | 
| camel.component.amqp.task-executor | 允许您指定用于消耗消息的自定义任务 executor。选项是一个 org.springframework.core.task.TaskExecutor 类型。 | 字符串 | |
| camel.component.amqp.test-connection-on-startup | 指定是否在启动时测试连接。这样可确保当 Camel 启动所有 JMS 用户与 JMS 代理的有效连接时。如果无法授予连接,则 Camel 会在启动时抛出异常。这样可确保 Camel 不使用失败的连接启动。JMS producers 也经过测试。 | false | 布尔值 | 
| camel.component.amqp.time-to-live | 发送消息时,指定消息的生存时间(以毫秒为单位)。 | -1 | Long | 
| camel.component.amqp.transacted | 指定是否使用转换模式 | false | 布尔值 | 
| camel.component.amqp.transaction-manager | 要使用的 Spring 事务管理器。选项是一个 org.springframework.transaction.PlatformTransactionManager 类型。 | 字符串 | |
| camel.component.amqp.transaction-name | 要使用的事务的名称。 | 字符串 | |
| camel.component.amqp.transaction-timeout | 如果使用转换模式,事务的超时值(以秒为单位)。 | -1 | 整数 | 
| camel.component.amqp.transfer-exception | 如果启用并且您使用 Request Reply messaging (InOut)和在消费者端的 Exchange 失败,则原因 Exception 将发回为 javax.jms.ObjectMessage 的响应。如果客户端是 Camel,则返回的 Exception 为 rerown。这允许您使用 Camel JMS 作为路由中的网桥,例如,使用持久性队列来启用强大的路由。请注意,如果您也启用了 transferExchange,这个选项会优先使用。需要被捕获的例外是串行的。在返回到生成者时,消费者侧的原始 Exception 可以嵌套在外部异常中,如 org.apache.camel.RuntimeCamelException。 | false | 布尔值 | 
| camel.component.amqp.transfer-exchange | 您可以通过线线传输交换,而不只是正文和标头。以下字段会被传输: 在 body, Out body, Fault body, In headers, Out headers, Fault 标头, Exchange properties, Exchange exception。这要求对象是序列化的。Camel 将排除任何非序列化对象,并将其记录在 WARN 级别。您必须在生成者和消费者端启用这个选项,因此 Camel 知道有效负载是交换而不是常规有效负载。 | false | 布尔值 | 
| camel.component.amqp.transfer-fault | 如果启用且您使用 Request Reply messaging (InOut),且交换失败,在消费者端使用 SOAP 错误(非例外),则 Message SerialisFault ()上的错误标志将重新作为带有键 org.apache.camel.component.jms.JmsConstants #JMS_TRANSFER_FAULT kexecJMS_TRANSFER_FAULT 的 JMS 标头发回,作为带有密钥 org.apache.camel.component.jms.JmsConstants #JMS_TRANSFER_FAULT 的响应中。如果客户端是 Camel,则返回的 fault 标志将在 org.apache.camel.MessageAllsetFault (boolean)上设置。在使用支持错误(如 SOAP)(如 cxf 或 spring-ws)的 Camel 组件时,您可能需要启用此功能。 | false | 布尔值 | 
| camel.component.amqp.use-message-i-d-as-correlation-i-d | 指定 JMSMessageID 是否应该始终用作 InOut 消息的 JMSCorrelationID。 | false | 布尔值 | 
| camel.component.amqp.username | 与 ConnectionFactory 搭配使用的用户名。您还可以直接在 ConnectionFactory 上配置用户名/密码。 | 字符串 | |
| camel.component.amqp.wait-for-provision-correlation-to-be-updated-counter | 在通过 JMS 进行请求/回复时,以及启用选项 useMessageIDAsCorrelationID 时,等待 provisional correlation id 的次数。 | 50 | 整数 | 
| camel.component.amqp.wait-for-provision-correlation-to-be-updated-thread-sleeping-time | millis 中的间隔,在每次等待配置关联 ID 时处于睡眠状态。 | 100 | Long |