PublishJMS Processor
描述
从 FlowFile 的内容创建 JMS 消息并将其发送到 JMS 目标(队列或主题)作为 JMS BytesMessage 或 TextMessage。FlowFile 属性将作为 JMS 头和/或属性添加到传出的 JMS 消息中。
标签
属性
| 名称 | 默认值 | 可选值 | 描述 |
|---|---|---|---|
| Connection Factory Service | | 控制器服务 API:JMSConnectionFactoryProviderDefinitioncn.org.acal.lynxus-lynxus-jms-cf-service-nar-2.11.8 | 用于获取连接工厂的控制器服务。或者,也可以使用「JNDI *」或「JMS *」属性来配置连接工厂。 |
| Destination Name | | JMS 目标的名称。 通常由管理员提供(例如“topic://myTopic”或“myTopic”)。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Destination Type | QUEUE |
| JMS 目标的类型。 可以是“队列”或“主题”之一。 通常由管理员提供。 默认为“队列” |
| User Name | | 用于身份验证和授权的用户名。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| Password | | 密码用于认证和授权。 敏感属性:是 | |
| Connection Client ID | | 如果设置,要在连接上设置的客户端 ID。对于持久非共享消费者,这是强制性的,对于所有其他消费者,这是可选的,通常对于共享消费者,不建议设置。请 支持表达式语言:是(仅使用环境/系统变量求值) | |
| Message Body Type | bytes |
| 要构造的 JMS 消息正文的类型。 |
| Character Set | UTF-8 | 用于构造和解释文本消息的字符集名称 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Allow Illegal Characters in Header Names | false |
| 指定是否应将标头名称中的非法字符发送到 JMS 代理。通常是连字符和句号。 |
| Attributes to Send as JMS Headers | .* | 指定正则表达式,确定哪些 FlowFile 属性名称应作为 JMS 标头发送。 | |
| Maximum Batch Size | 1 | 每次调用处理器时要发布或使用的最大消息数。 | |
| Record Reader | | 控制器服务 API:RecordReaderFactorycn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 用于将传入的 FlowFile 解析为记录的记录读取器。 |
| Record Writer | | 控制器服务 API:RecordSetWriterFactorycn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | Record Writer用于在将记录发布为 JMS 消息之前序列化记录。 |
| JNDI Initial Context Factory Class | | JNDI 初始上下文工厂类的完全限定类名 (java.naming.factory.initial)。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| JNDI Provider URL | | 用作 java.naming.provider.url 值的 JNDI 提供程序 URL。有关允许的 URL 方案,请参阅附加详细信息文档。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| JNDI Name of the Connection Factory | | 要查找连接工厂的 JNDI 对象的名称。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| JNDI / JMS Client Libraries | | 指定要添加到 ClassPath 的 jar 文件和/或目录,以便加载 JNDI / JMS 客户端库。这应该是文件、目录和/或 URL 的逗号分隔列表。如果目录 支持表达式语言:是(仅使用环境/系统变量求值) | |
| JNDI Principal | | 使用 JNDI 进行身份验证时使用的主体 (java.naming.security.principal)。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| JNDI Credentials | | 使用 JNDI 进行身份验证时使用的凭据 (java.naming.security.credentials)。 敏感属性:是 | |
| JMS Connection Factory Implementation Class | | JMS ConnectionFactory 实现类的完全限定名称(例如 org.apache.activemq.ActiveMQConnectionFactory)。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| JMS Client Libraries | | 包含要添加到类路径的附加资源(例如 JAR、配置文件等)的目录路径(定义为值的逗号分隔列表)。这些资源通常表示目标 支持表达式语言:是(仅使用环境/系统变量求值) | |
| JMS Broker URI | | 指向 JMS 消息代理网络位置的 URI。ActiveMQ 示例:'tcp://myhost:61616'。IBM MQ 示例:'myhost(1414)' 和 'myhost01(1414),myhost02(1414)'。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| JMS SSL Context Service | | 控制器服务 API:SSLContextServicecn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | SSL 上下文服务用于为 TLS/SSL 连接提供客户端证书信息。 |
动态属性
| 名称 | 值 | 描述 |
|---|---|---|
| The name of a Connection Factory configuration property. | The value of a given Connection Factory configuration property. | Connection Factory 的附加配置属性。当通过处理器的 'JNDI *' 或 'JMS *' 属性配置 Connection Factory 时可以使用。有关更多信息,请参阅附加详细信息页面。 |
关系 (Relationships)
| 名称 | 描述 | 自动终止 |
|---|---|---|
failure | 所有无法发送到 JMS 目标的 FlowFile 都将路由到此关系 | 否 |
success | 发送到 JMS 目标的所有 FlowFile 都会路由到此关系 | 否 |
读取的 FlowFile 属性
| 名称 | 描述 |
|---|---|
jms_deliveryMode | 此属性成为 JMSDeliveryMode 消息头。必须为整数。 |
jms_expiration | 此属性成为 JMSExpiration 消息头。必须为长整型。 |
jms_priority | 此属性成为 JMSPriority 消息头。必须为整数。 |
jms_redelivered | 此属性成为 JMSRedelivered 消息头。 |
jms_timestamp | 此属性成为 JMSTimestamp 消息头。必须为长整型。 |
jms_correlationId | 此属性成为 JMSCorrelationID 消息头。 |
jms_type | 此属性成为 JMSType 消息头。必须为整数。 |
jms_replyTo | 此属性成为 JMSReplyTo 消息头。必须为整数。 |
jms_destination | 此属性成为 JMSDestination 消息头。必须为整数。 |
other attributes | 所有不以 jms_ are added as message properties. |
other attributes .type | 当属性将作为消息属性添加时,同名但在末尾带有额外 '.type' 的第二个属性将导致消息属性使用该强类型发送。例如,属性 'delay' 值为 '12000',另一个属性 'delay.type' 值为 'integer',将导致 JMS 消息属性 'delay' 以 Integer 而非 String 发送。支持的类型有 boolean、byte、short、integer、long、float、double 和 string(默认值)。 |
状态管理
该组件不存储状态。
受限 (Restricted)
该组件不受限。
输入要求
该组件要求有传入连接。
系统资源考量
| 资源 | 描述 |
|---|---|
| MEMORY | An instance of this component can cause high usage of this system resource. Multiple instances or high concurrency settings may result a degradation of performance. |
详细说明
PublishJMS
概述
该 Processor 把传入 FlowFile 的内容发布到符合 JMS 的消息系统。
该 Processor 做两件事。它通过提取 FlowFile 的内容(消息体和 Attribute)来构建 JMS Message。消息构建完成后,会发送到预先 配置的 JMS Destination。标准 JMS Header 会从 FlowFile 中提取 并设置为 javax.jms.Message 的 JMS header,其他 FlowFile Attribute 会设置为 javax.jms.Message 的 property。成功后,传入 FlowFile 会转移到 success Relationship;失败时,FlowFile 会被施加惩罚(penalize)并 转移到 failure Relationship。
配置详情
编写本文档时,只定义了适用于大多数场景的核心配置属性。 其他属性会随着该组件的发展逐步定义。配置 PublishJMS:
- User Name - [可选] 当该 Processor 从预先配置的 javax.jms.ConnectionFactory(见下文)获取 javax.jms.Connection 时,用于认证和授权的用户名。
- Password - [可选] 与 User Name 配合使用的密码。
- Destination Name - [必需] javax.jms.Destination 的名称。通常由管理员提供(例如 'topic://myTopic')。
- Destination Type - [必需] javax.jms.Destination 的类型。可以是 'QUEUE' 或 'TOPIC' 之一,通常由管理员 提供。默认为 'QUEUE'。
Connection Factory 配置
为 Processor 配置 Connection Factory 有多种方式:
- Connection Factory Service 属性 - 链接到预先配置的 Controller Service(JndiJmsConnectionFactoryProvider 或 JMSConnectionFactoryProvider)
- JNDI * 属性 - Processor 级别的配置,属性与 JndiJmsConnectionFactoryProvider Controller Service 的属性相同,这种情况下也可以使用动态属性
- JMS * 属性 - Processor 级别的配置,属性与 JMSConnectionFactoryProvider Controller Service 的属性相同,这种情况下也可以使用动态属性
推荐方式是使用 Connection Factory Service 属性和预先配置的 Controller Service。这也是最方便的方式,因为只需配置一次 Controller Service,就可以在多个 Processor 中使用。
不过,由于第三方 JMS 客户端库与 Lynxus 之间的 Java ClassLoader 处理不兼容,某些 JMS 客户端库可能无法与 Controller Service 一起工作。如果使用 Controller Service 时遇到 java.lang.ClassCastException 错误,请尝试通过 'JNDI *' 或 'JMS *' 以及 Processor 的动态属性配置 Connection Factory。关于这些属性的更多细节,参见相应 Controller Service 的文档('JNDI *' 对应 JndiJmsConnectionFactoryProvider,'JMS *' 对应 JMSConnectionFactoryProvider)。