Apache Camel 组件参考


Red Hat Fuse 7.8

配置 Camel 组件参考

摘要

Apache Camel 具有 100 多个组件,每个组件都高度可配置。本指南描述了每个组件的设置。

第 1 章 组件概述

本章介绍可用于 Apache Camel 的所有组件。

1.1. 容器类型

Red Hat Fuse 提供各种容器类型,您可以在其中部署 Camel 应用程序:

  • Spring Boot
  • Apache Karaf
  • JBoss Enterprise Application Platform (JBoss EAP)

此外,Camel 应用可以作为 无容器运行 :即,Camel 应用直接在 JVM 中运行,无需任何特殊容器。

在某些情况下,Fuse 可能会支持一个容器中的 Camel 组件,但不支持其他组件。这样做有多种原因,但在某些情况下,某个组件不适合所有容器类型。例如,camel-ejb 组件专为 Java EE (即 JBoss EAP)而设计的,它无法在其他容器类型中受支持。

1.2. 支持的组件

请注意以下密钥:

Expand
符号描述

支持

不支持或者还没有支持

已弃用

以后的发行版本中可能会删除

表 1.1 “Apache Camel 组件支持列表” 提供有关在哪些容器中支持哪些 Camel 组件的综合详情。

Expand
表 1.1. Apache Camel 组件支持列表
组件容器无容器Spring Boot 2.xKarafJBoss EAP

activemq-camel

camel-ahc

camel-ahc-ws

camel-ahc-wss

camel-amqp

camel-apns

camel-as2

camel-asterisk

camel-atmos

camel-atmosphere-websocket

camel-atom

camel-atomix

camel-avro

camel-aws

camel-azure

camel-bam

已弃用

已弃用

已弃用

camel-bean

camel-bean-validator

camel-beanstalk

camel-binding

已弃用

已弃用

已弃用

camel-blueprint

camel-bonita

camel-box

camel-braintree

camel-browse

camel-cache

已弃用

已弃用

已弃用

camel-caffeine

camel-cdi

已弃用

camel-chronicle-engine

camel-chunk

camel-class

camel-cm-sms

camel-cmis

camel-coap

camel-cometd

camel-context

已弃用

camel-consul

camel-controlbus

camel-couchbase

camel-couchdb

camel-cql

camel-crypto

camel-crypto-cms

camel-cxf

camel-cxf-transport

camel-dataformat

camel-dataset

camel-digitalocean

camel-direct

camel-direct-vm

camel-disruptor

camel-dns

camel-docker

camel-dozer

camel-drill

camel-dropbox

camel-eclipse

已弃用

camel-ehcache

camel-ejb

camel-elasticsearch

camel-elasticsearch5

camel-elasticsearch-rest

camel-elsql

camel-etcd

camel-eventadmin

camel-exec

camel-facebook

camel-fhir

camel-file

camel-flatpack

camel-flink

camel-fop

camel-freemarker

camel-ftp

camel-gae

已弃用

camel-ganglia

camel-geocoder

camel-git

camel-github

camel-google-bigquery

camel-google-calendar

camel-google-drive

camel-google-mail

camel-google-pubsub

camel-google-sheets

camel-grape

camel-groovy-dsl

已弃用

camel-grpc

camel-guava-eventbus

camel-guice

已弃用

已弃用

camel-hawtdb

已弃用

已弃用

已弃用

camel-hazelcast

camel-hbase

camel-hdfs

已弃用

camel-hdfs2

camel-headersmap

camel-hipchat

camel-http

已弃用

已弃用

camel-http4

camel-hystrix

camel-ibatis

已弃用

camel-iec60870

camel-ignite

camel-imap

camel-infinispan

camel-influxdb

camel-ipfs

camel-irc

camel-ironmq

camel-jasypt

camel-javaspace

已弃用

camel-jbpm

camel-jcache

camel-jcifs

camel-jclouds

camel-jcr

camel-jdbc

camel-jetty

已弃用

已弃用

已弃用

camel-jetty8

camel-jetty9

camel-jgroups

camel-jing

camel-jira

camel-jms

camel-jmx

camel-jolt

camel-josql

已弃用

已弃用

已弃用

camel-jpa

camel-jsch

camel-json-validator

camel-jt400

camel-juel

已弃用

已弃用

已弃用

camel-kafka

camel-kestrel

已弃用

已弃用

已弃用

camel-krati

已弃用

已弃用

已弃用

camel-kubernetes

camel-kura

camel-ldap

camel-ldif

camel-leveldb

camel-linkedin

camel-log

camel-lpr

camel-lra

camel-lucene

camel-lumberjack

camel-master

camel-mail

camel-metrics

camel-micrometer

camel-milo

camel-mina

已弃用

camel-mina2

camel-mllp

camel-mock

camel-mongodb

camel-mongodb-gridfs

camel-mongodb3

camel-mqtt

已弃用

已弃用

已弃用

已弃用

camel-msv

camel-mustache

camel-mvel

camel-mybatis

camel-nagios

camel-nats

camel-netty

已弃用

已弃用

camel-netty-http

已弃用

已弃用

camel-netty4

camel-netty4-http

camel-nsq

camel-olingo2

camel-olingo4

camel-openapi-java

camel-openshift

已弃用

camel-openstack

camel-opentracing

camel-optaplanner

camel-paho

camel-paxlogging

camel-pdf

camel-pgevent

camel-pop3

camel-printer

camel-properties

camel-pubnub

camel-pulsar

camel-quartz

已弃用

camel-quartz2

camel-quickfix

camel-rabbitmq

camel-reactive-streams

camel-reactor

camel-ref

camel-rest

camel-rest-api

camel-rest-openapi

camel-rest-swagger

camel-restlet

camel-ribbon

camel-rmi

camel-routebox

已弃用

camel-rss

camel-rx

已弃用

已弃用

已弃用

camel-rxjava2

camel-saga

camel-salesforce

camel-sap

camel-sap-netweaver

camel-saxon

camel-scala

已弃用

已弃用

已弃用

camel-scheduler

camel-schematron

camel-scp

camel-scr

已弃用

已弃用

camel-script

已弃用

已弃用

已弃用

已弃用

camel-seda

camel-service

camel-servicenow

camel-servlet

camel-servletlistener

已弃用

已弃用

已弃用

camel-sftp

camel-shiro

camel-sip

camel-sjms

camel-sjms2

camel-slack

camel-smpp

camel-snakeyaml

camel-snmp

camel-solr

camel-spark

camel-spark-rest

camel-splunk

camel-spring

camel-spring-batch

camel-spring-boot

camel-spring-cloud

camel-spring-cloud-consul

camel-spring-cloud-netflix

camel-spring-cloud-zookeeper

camel-spring-event

camel-spring-integration

camel-spring-javaconfig

camel-spring-ldap

camel-spring-redis

camel-spring-security

camel-spring-ws

camel-sql

camel-sql-stored

camel-ssh

camel-stax

camel-stomp

camel-stream

camel-string-template

camel-stub

camel-swagger

已弃用

已弃用

camel-swagger-java

camel-tagsoup

camel-telegram

camel-thrift

camel-tika

camel-timer

camel-twilio

camel-twitter

camel-undertow

camel-urlrewrite

已弃用

已弃用

已弃用

camel-validator

camel-velocity

camel-vertx

camel-vm

camel-weather

camel-web3j

camel-websocket

camel-weka

camel-wordpress

camel-xchange

camel-xmlrpc

camel-xmlsecurity

camel-xmpp

camel-xquery

camel-xslt

camel-yammer

camel-yql

camel-zendesk

camel-zipkin

camel-zookeeper

camel-zookeeper-master

Expand
表 1.2. Apache Camel 数据格式支持列表
组件容器无容器Spring Boot 2.xKarafJBoss EAP

camel-asn1

camel-avro

camel-barcode

camel-base64

camel-beanio

camel-bindy

camel-boon

camel-castor

已弃用

已弃用

已弃用

camel-crypto

camel-csv

camel-fhir

camel-flatpack

camel-gzip

camel-hessian

已弃用

已弃用

已弃用

已弃用

camel-hl7

camel-ical

camel-jacksonxml

camel-jaxb

camel-jibx

camel-json-fastjson

camel-json-gson

camel-json-jackson

camel-json-johnzon

camel-json-xstream

camel-lzf

camel-mime-multipart

camel-pgp

camel-protobuf

camel-rss

camel-serialization

camel-soapjaxb

camel-string

camel-syslog

camel-tarfile

camel-thrift

camel-univocity-csv

camel-univocity-fixed

camel-univocity-tsv

camel-xmlbeans

已弃用

已弃用

已弃用

camel-xmljson

已弃用

已弃用

已弃用

已弃用

camel-xmlrpc

camel-xstream

camel-yaml-snakeyaml

camel-zip

camel-zipfile

Expand
表 1.3. Apache Camel 语言支持列表
语言容器无容器Spring Boot 2.xKarafJBoss EAP

bean 方法

常数

EL

已弃用

ExchangeProperty

File

groovy

标头

JsonPath

JXPath

已弃用

MVEL

OGNL

PHP

已弃用

已弃用

已弃用

Python

已弃用

已弃用

已弃用

Ref

Ruby

已弃用

已弃用

已弃用

Simple(简单)

SpEL

令牌化

XML 令牌化

XPath

XQuery

第 2 章 ActiveMQ

ActiveMQ 组件

ActiveMQ 组件允许消息发送到 JMS Queue 或 Topic;或使用 Apache ActiveMQ 从 JMS Queue 或 Topic 使用消息。

此组件基于 第 178 章 JMS 组件,并使用 Spring 的 JMS 支持声明事务,使用 Spring 的 JmsTemplate 来发送和接收 MessageListenerContainer 进行消耗。第 178 章 JMS 组件 组件中的所有选项也适用于此组件。

要使用此组件,请确保您的 classpath 上的 activemq.jaractivemq-core.jar 与 Camel 依赖关系(如 camel-core.jarcamel-spring.jarcamel-jms.jar.

转换和缓存

如果您在使用 JMS 的事务时,请参阅 JMS 页面中的事务和缓存级别 部分,因为它可能会影响性能。

URI 格式

activemq:[queue:|topic:]destinationName
Copy to Clipboard Toggle word wrap

其中 destinationName 是 ActiveMQ 队列或主题名称。默认情况下,targetName 解释为队列名称。例如,要连接到队列 FOO.BAR,请使用:

activemq:FOO.BAR
Copy to Clipboard Toggle word wrap

如果需要,可以包括可选 queue: 前缀:

activemq:queue:FOO.BAR
Copy to Clipboard Toggle word wrap

要连接到一个主题,您必须包括 主题: 前缀。例如,要连接到该主题的 Stocks.Prices,请使用:

activemq:topic:Stocks.Prices
Copy to Clipboard Toggle word wrap

选项

请参阅 第 178 章 JMS 组件 组件中的 Options,因为所有这些选项也适用于这个组件。

Camel on EAP 部署

该组件受到 EAP (Wildfly Camel)框架的 Camel 支持,该框架在红帽 JBoss 企业应用平台(JBoss EAP)容器上提供简化的部署模型。

您可以配置 ActiveMQ Camel 组件,以便使用嵌入式代理或外部代理。要在 JBoss EAP 容器中嵌入代理,请在 EAP 容器配置文件 进行 ActiveMQ 资源适配器中配置 ActiveMQ 资源适配器来详情,请参阅 ActiveMQ 资源适配器配置

配置连接工厂

以下 测试案例 说明了如何在使用 activeMQComponent () 方法 添加到 CamelContext 中,同时指定用于连接 ActiveMQ 的 brokerURL

camelContext.addComponent("activemq", activeMQComponent("vm://localhost?broker.persistent=false"));
Copy to Clipboard Toggle word wrap

使用 Spring XML 配置 ConnectionFactory

您可以在 ActiveMQComponent 上配置 ActiveMQ 代理 URL,如下所示

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

  <camelContext xmlns="http://camel.apache.org/schema/spring">
  </camelContext>

  <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
    <property name="brokerURL" value="tcp://somehost:61616"/>
  </bean>

</beans>
Copy to Clipboard Toggle word wrap

使用连接池

使用 Camel 发送到 ActiveMQ 代理时,建议使用池连接工厂来处理 JMS 连接、会话和制作者的有效池。这记录在 ActiveMQ Spring Support 的页面。

您可以使用 Maven 获取 Jencks AMQ 池:

    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-pool</artifactId>
      <version>5.3.2</version>
    </dependency>
Copy to Clipboard Toggle word wrap

然后,按照如下所示设置 activemq 组件:

    <bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="tcp://localhost:61616" />
    </bean>

    <bean id="pooledConnectionFactory"    class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
        <property name="maxConnections" value="8" />
        <property name="connectionFactory" ref="jmsConnectionFactory" />
    </bean>

    <bean id="jmsConfig" class="org.apache.camel.component.jms.JmsConfiguration">
        <property name="connectionFactory" ref="pooledConnectionFactory"/>
        <property name="concurrentConsumers" value="10"/>
    </bean>

    <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
        <property name="configuration" ref="jmsConfig"/>
    </bean>
Copy to Clipboard Toggle word wrap
注意

请注意池连接工厂上的 initdestroy 方法。务必要确保连接池已正确启动和关闭。

然后,PooledConnectionFactory 将创建一个同时使用最多 8 个连接的连接池。每个连接可由许多会话共享。有一个名为 maxActive 的选项,可用于配置每个连接的最大会话数;默认值为 500。在 ActiveMQ 5.7 上,选项已被重命名为,以更好地反映其用途,被命名为 maxActiveSessionPerConnection。注意 并发Consumers 设置为高于 maxConnections 的值。这为好,因为每个消费者都使用会话,而作为会话可以共享同一连接,我们就安全。在这个示例中,我们可以同时有 8 * * 500 = 4000 个活跃会话。

在路由中调用 MessageListener POJO

ActiveMQ 组件还向 Processor 提供帮助 Type Converter from a JMS MessageListener。这意味着,第 43 章 Bean 组件 组件能够直接调用任何 JMS MessageListener bean。

例如,您可以在 JMS 中创建 MessageListener,如下所示:

public class MyListener implements MessageListener {
   public void onMessage(Message jmsMessage) {
       // ...
   }
}
Copy to Clipboard Toggle word wrap

然后,在您的路由中使用它,如下所示

from("file://foo/bar").
  bean(MyListener.class);
Copy to Clipboard Toggle word wrap

也就是说,您可以重复使用任何 Apache Camel 组件并将其集成到您的 JMS MessageListener POJO\!

使用 ActiveMQ 目的地选项

ActiveMQ 5.6 提供

您可以使用 "destination." 前缀在 endpoint uri 中配置 Destination Options。例如,要将消费者标记为独占,并将其预先大小设定为 50,您可以执行以下操作:

<camelContext xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="file://src/test/data?noop=true"/>
    <to uri="activemq:queue:foo"/>
  </route>
  <route>
    <!-- use consumer.exclusive ActiveMQ destination option, notice we have to prefix with destination. -->
    <from uri="activemq:foo?destination.consumer.exclusive=true&amp;destination.consumer.prefetchSize=50"/>
    <to uri="mock:results"/>
  </route>
</camelContext>
Copy to Clipboard Toggle word wrap

使用公告消息

ActiveMQ 可以生成公告消息,它们放入您可以使用的主题。这些消息可以帮助您发送警报,以检测缓慢的消费者或者构建统计信息(每天的信息/生成的数量等) 以下 Spring DSL 示例显示如何从主题读取消息。

<route>
	<from uri="activemq:topic:ActiveMQ.Advisory.Connection?mapJmsMessage=false" />
	<convertBodyTo type="java.lang.String"/>
	<transform>
	     <simple>${in.body}&#13;</simple>
	</transform>
	<to uri="file://data/activemq/?fileExist=Append&ileName=advisoryConnection-${date:now:yyyyMMdd}.txt" />
</route>
Copy to Clipboard Toggle word wrap

如果您在队列上使用消息,您应该会看到 data/activemq 文件夹下的以下文件:

advisoryConnection-20100312.txt advisoryProducer-20100312.txt

并包含字符串:

      ActiveMQMessage {commandId = 0, responseRequired = false, messageId = ID:dell-charles-3258-1268399815140
      -1:0:0:0:221, originalDestination = null, originalTransactionId = null, producerId = ID:dell-charles-
      3258-1268399815140-1:0:0:0, destination = topic://ActiveMQ.Advisory.Connection, transactionId = null,
      expiration = 0, timestamp = 0, arrival = 0, brokerInTime = 1268403383468, brokerOutTime = 1268403383468,
      correlationId = null, replyTo = null, persistent = false, type = Advisory, priority = 0, groupID = null,
      groupSequence = 0, targetConsumerId = null, compressed = false, userID = null, content = null,
      marshalledProperties = org.apache.activemq.util.ByteSequence@17e2705, dataStructure = ConnectionInfo
      {commandId = 1, responseRequired = true, connectionId = ID:dell-charles-3258-1268399815140-2:50,
      clientId = ID:dell-charles-3258-1268399815140-14:0, userName = , password = *****,
      brokerPath = null, brokerMasterConnector = false, manageable = true, clientMaster = true},
      redeliveryCounter = 0, size = 0, properties = {originBrokerName=master, originBrokerId=ID:dell-charles-
      3258-1268399815140-0:0, originBrokerURL=vm://master}, readOnlyProperties = true, readOnlyBody = true,
      droppable = false}
Copy to Clipboard Toggle word wrap

获取组件 JAR

您需要此依赖项:

  • activemq-camel

ActiveMQ 是与 ActiveMQ 项目 发布的 第 178 章 JMS 组件 组件的扩展。

<dependency>
  <groupId>org.apache.activemq</groupId>
  <artifactId>activemq-camel</artifactId>
  <version>5.6.0</version>
</dependency>
Copy to Clipboard Toggle word wrap

第 3 章 AHC 组件

可作为 Camel 版本 2.8 使用

ahc: 组件为消耗外部 HTTP 资源(作为使用 HTTP 调用外部服务器的客户端)提供基于 HTTP 的端点。
组件使用 Async Http Client 库。

Maven 用户需要将以下依赖项添加到其 pom.xml 中:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-ahc</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

3.1. URI 格式

ahc:http://hostname[:port][/resourceUri][?options]
ahc:https://hostname[:port][/resourceUri][?options]
Copy to Clipboard Toggle word wrap

默认情况下,将端口 80 用于 HTTP,443 用于 HTTPS。

您可以使用以下格式在 URI 中附加查询选项 ?option=value&option=value&…​

3.2. AhcEndpoint 选项

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

ahc:httpUri
Copy to Clipboard Toggle word wrap

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

3.2.1. 路径名(1 参数):

Expand
名称描述默认类型

httpUri

要使用的 URI,如 http://hostname:port/path

 

URI

3.2.2. 查询参数(13 参数):

Expand
名称描述默认类型

bridgeEndpoint (producer)

如果 选项为 true,则忽略 Exchange.HTTP_URI 标头,并使用端点的 URI 请求。您也可以将 throwExceptionOnFailure 设为 false,以便 AhcProducer 发送所有故障响应。

false

布尔值

bufferSize (producer)

在 Camel 和 AHC 客户端之间传输数据时使用的初始内存缓冲大小。

4096

int

connectionClose (producer)

定义是否需要将 Connection Close 标头添加到 HTTP Request 中。此参数默认为 false

false

布尔值

cookieHandler (producer)

配置 Cookie 处理程序以维护 HTTP 会话

 

CookieHandler

headerFilterStrategy (producer)

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

 

HeaderFilterStrategy

throwExceptionOnFailure (producer)

如果来自远程服务器的失败响应,禁用引发 AhcOperationFailedException 的选项。这可让您获得所有响应,无论 HTTP 状态代码如何。

true

布尔值

transferException (producer)

如果启用并交换在消费者端的处理失败,如果导致的 Exception 在响应中作为 application/x-java-serialized-object 内容类型(例如,使用 Jetty 或 Servlet Camel 组件)发送了序列化处理。在制作者端,异常会按原样进行反序列化和引发,而不是 AhcOperationFailedException。导致的异常需要被序列化。默认情况下关闭。如果您启用此功能,Java 将把传入的数据从请求中反序列化为 Java,这可能会成为潜在的安全风险。

false

布尔值

binding (advanced)

使用自定义 AhcBinding,它可以控制如何在 AHC 和 Camel 之间绑定。

 

AhcBinding

clientConfig (advanced)

将 AsyncHttpClient 配置为使用自定义 com.ning.http.client.AsyncHttpClientConfig 实例。

 

AsyncHttpClientConfig

clientConfigOptions (advanced)

使用 map 中的键/值配置 AsyncHttpClientConfig。

 

map

同步 (高级)

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

false

布尔值

clientConfigRealmOptions (security)

使用 map 中的 key/value 配置 AsyncHttpClientConfig Realm。

 

map

sslContextParameters (security)

引用 registry 中的 org.apache.camel.util.jsse.SSLContextParameters。这个引用会覆盖组件级别的任何配置的 SSLContextParameters。请参阅使用 JSSE 配置实用程序。请注意,配置这个选项将覆盖通过端点或组件级别的 clientConfig 选项提供的任何 SSL/TLS 配置选项。

 

SSLContextParameters

3.3. Spring Boot Auto-Configuration

组件支持 9 个选项,如下所示。

Expand
名称描述默认类型

camel.component.ahc.allow-java-serialized-object

当请求使用 context-type=application/x-java-serialized-object (默认为 off)时,是否允许 java serialization。如果您启用此功能,Java 将把传入的数据从请求中反序列化为 Java,这可能会成为潜在的安全风险。

false

布尔值

camel.component.ahc.binding

使用自定义 AhcBinding,它可以控制如何在 AHC 和 Camel 之间绑定。选项是一个 org.apache.camel.component.ahc.AhcBinding 类型。

 

字符串

camel.component.ahc.client

使用自定义 AsyncHttpClient。选项是 org.asynchttpclient.AsyncHttpClient 类型。

 

字符串

camel.component.ahc.client-config

将 AsyncHttpClient 配置为使用自定义 com.ning.http.client.AsyncHttpClientConfig 实例。选项是 org.asynchttpclient.AsyncHttpClientConfig 类型。

 

字符串

camel.component.ahc.enabled

启用 ahc 组件

true

布尔值

camel.component.ahc.header-filter-strategy

使用自定义 org.apache.camel.spi.HeaderFilterStrategy 过滤来自 Camel 消息的标头。选项是一个 org.apache.camel.spi.HeaderFilterStrategy 类型。

 

字符串

camel.component.ahc.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.ahc.ssl-context-parameters

引用 registry 中的 org.apache.camel.util.jsse.SSLContextParameters。请注意,配置这个选项将覆盖通过端点或组件级别的 clientConfig 选项提供的任何 SSL/TLS 配置选项。选项是一个 org.apache.camel.util.jsse.SSLContextParameters 类型。

 

字符串

camel.component.ahc.use-global-ssl-context-parameters

启用使用全局 SSL 上下文参数。

false

布尔值

3.4. AhcComponent Options

AHC 组件支持 8 个选项,它们如下所列。

Expand
名称描述默认类型

client (advanced)

使用自定义 AsyncHttpClient

 

AsyncHttpClient

binding (advanced)

使用自定义 AhcBinding,它可以控制如何在 AHC 和 Camel 之间绑定。

 

AhcBinding

clientConfig (advanced)

将 AsyncHttpClient 配置为使用自定义 com.ning.http.client.AsyncHttpClientConfig 实例。

 

AsyncHttpClientConfig

sslContextParameters (security)

引用 registry 中的 org.apache.camel.util.jsse.SSLContextParameters。请注意,配置这个选项将覆盖通过端点或组件级别的 clientConfig 选项提供的任何 SSL/TLS 配置选项。

 

SSLContextParameters

allowJavaSerialized Object (advanced)

当请求使用 context-type=application/x-java-serialized-object (默认为 off)时,是否允许 java serialization。如果您启用此功能,Java 将把传入的数据从请求中反序列化为 Java,这可能会成为潜在的安全风险。

false

布尔值

useGlobalSslContext Parameters (security)

启用使用全局 SSL 上下文参数。

false

布尔值

headerFilterStrategy (filter)

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

 

HeaderFilterStrategy

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

请注意,在 AhcComponent 上设置任何选项会将这些选项传播到正在创建的 AhcEndpoints 中。但是 AhcEndpoint 还可以配置/覆盖自定义选项。在端点上设置的选项将始终优先于 AhcComponent 中的选项。

3.5. 消息标头

Expand
名称类型描述

Exchange.HTTP_URI

字符串

要调用的 URI。将覆盖端点上直接设置的现有 URI。

Exchange.HTTP_PATH

字符串

请求 URI 的路径,标头将使用 HTTP_URI 构建请求 URI。如果路径以 "/" 开始,http producer 将尝试根据 Exchange.HTTP_BASE_URI 标头或 exchange.getFromEndpoint ().getEndpointUri ()找到相对路径;

Exchange.HTTP_QUERY

字符串

下一个 Camel 2.11: URI 参数.将覆盖端点上直接设置的现有 URI 参数。

Exchange.HTTP_RESPONSE_CODE

int

外部服务器的 HTTP 响应代码。为 200,表示确定。

Exchange.HTTP_CHARACTER_ENCODING

字符串

字符编码.

Exchange.CONTENT_TYPE

字符串

HTTP 内容类型。在 IN 和 OUT 消息上设置,以提供内容类型,如 text/html

Exchange.CONTENT_ENCODING

字符串

HTTP 内容编码。在 IN 和 OUT 消息上设置,以提供内容编码,如 gzip

3.6. Message Body

Camel 会将来自外部服务器的 HTTP 响应存储在 OUT 正文中。来自 IN 消息的所有标头都将复制到 OUT 消息,因此在路由过程中保留标头。另外,Camel 还会将 HTTP 响应标头添加到 OUT 消息标头中。

3.7. 响应代码

Camel 将根据 HTTP 响应代码处理:

  • 响应代码位于 100.299 范围中,Camel 被视为成功的响应。
  • 响应代码位于 300..399 范围中,Camel 被视为重定向响应,并将使用信息抛出 AhcOperationFailedException
  • 响应代码为 400+,Camel 将它作为外部服务器故障相关,并将引发 AhcOperationFailedException 及信息。

    throwExceptionOnFailure

    选项 throwExceptionOnFailure 可以设为 false,以防止 AhcOperationFailedException 引发失败的响应代码。这可让您从远程服务器获得任何响应。

3.8. AhcOperationFailedException

这个例外包含以下信息:

  • HTTP 状态代码
  • HTTP 状态行(状态代码的文本)
  • 重定向位置,如果服务器返回重定向
  • 如果服务器提供了正文作为响应,响应正文作为 java.lang.String

3.9. 使用 GET 或 POST 调用

以下算法用于确定是否应该使用 GETPOST HTTP 方法:
.使用标头中提供的方法。
2.如果标头中提供了查询字符串,则 GET
3.如果端点配置了查询字符串,则 GET
4.POST 如果存在要发送的数据(其他人不是 null)。
5.否则 GET

3.10. 配置要调用的 URI

您可以直接设置 HTTP producer 的 URI 来直接组成端点 URI。在以下路由中,Camel 使用 HTTP 调用外部服务器 oldhost

from("direct:start")
        .to("ahc:http://oldhost");
Copy to Clipboard Toggle word wrap

以及对等的 Spring 示例:

<camelContext xmlns="http://activemq.apache.org/camel/schema/spring">
  <route>
    <from uri="direct:start"/>
    <to uri="ahc:http://oldhost"/>
  </route>
</camelContext>
Copy to Clipboard Toggle word wrap

您可以通过在消息中添加使用密钥 Exchange.HTTP_URI 的标头来覆盖 HTTP 端点 URI。

from("direct:start")
    .setHeader(Exchange.HTTP_URI, constant("http://newhost"))
    .to("ahc:http://oldhost");
Copy to Clipboard Toggle word wrap

3.11. 配置 URI 参数

ahc producer 支持将 URI 参数发送到 HTTP 服务器。URI 参数可以直接在端点 URI 上设置,或者作为在消息中带有密钥 Exchange.HTTP_QUERY 的标头设置。

from("direct:start")
        .to("ahc:http://oldhost?order=123&detail=short");
Copy to Clipboard Toggle word wrap

标头中提供的 或 选项:

from("direct:start")
            .setHeader(Exchange.HTTP_QUERY, constant("order=123&detail=short"))
        .to("ahc:http://oldhost");
Copy to Clipboard Toggle word wrap

3.12. 如何将 http 方法设置为 HTTP producer

HTTP 组件通过设置 message 标头来提供设置 HTTP 请求方法的方法。以下是一个示例:

from("direct:start")
            .setHeader(Exchange.HTTP_METHOD, constant("POST"))
        .to("ahc:http://www.google.com")
            .to("mock:results");
Copy to Clipboard Toggle word wrap

以及对等的 Spring 示例:

<camelContext xmlns="http://activemq.apache.org/camel/schema/spring">
  <route>
    <from uri="direct:start"/>
    <setHeader headerName="CamelHttpMethod">
        <constant>POST</constant>
    </setHeader>
    <to uri="ahc:http://www.google.com"/>
    <to uri="mock:results"/>
  </route>
</camelContext>
Copy to Clipboard Toggle word wrap

3.13. 配置 charset

如果使用 POST 来发送数据,您可以使用 Exchange 属性配置 charset

exchange.setProperty(Exchange.CHARSET_NAME, "iso-8859-1");
Copy to Clipboard Toggle word wrap

3.13.1. 端点 URI 的 URI 参数

在本例中,我们拥有完整的 URI 端点,该端点只是您在 Web 浏览器中键入的内容。可以使用 和 字符作为分隔符来设置多个 URI 参数,就像在 Web 浏览器中一样。此处 Camel 没有技巧。

// we query for Camel at the Google page
template.sendBody("ahc:http://www.google.com/search?q=Camel", null);
Copy to Clipboard Toggle word wrap

3.13.2. 消息中的 URI 参数

Map headers = new HashMap();
headers.put(Exchange.HTTP_QUERY, "q=Camel&lr=lang_en");
// we query for Camel and English language at Google
template.sendBody("ahc:http://www.google.com/search", null, headers);
Copy to Clipboard Toggle word wrap

在上面的标头值中,它不应 以 前缀为 ?,您可以像 & amp; char 一样分隔参数。

3.13.3. 获取响应代码

您可以通过使用 Exchange.HTTP_RESPONSE_CODE 的 Out message 标头获取来自 AHC 组件的 HTTP 响应代码。

Exchange exchange = template.send("ahc:http://www.google.com/search", new Processor() {
            public void process(Exchange exchange) throws Exception {
                exchange.getIn().setHeader(Exchange.HTTP_QUERY, constant("hl=en&q=activemq"));
            }
   });
   Message out = exchange.getOut();
   int responseCode = out.getHeader(Exchange.HTTP_RESPONSE_CODE, Integer.class);
Copy to Clipboard Toggle word wrap

3.14. Configuring AsyncHttpClient

AsyncHttpClient 客户端使用 AsyncHttpClientConfig 来配置客户端。如需了解更多详细信息,请参阅
Async Http Client 文档。

在 Camel 2.8 中,配置仅限于使用 AsyncHttpClientConfig.Builder 提供的构建器模式。在 Camel 2.8 中,AsyncHttpClientConfig 不支持 getters/setter,因此无法使用 Spring bean 风格(如 XML 文件中的 <bean> 标签)轻松创建/配置。

以下示例演示了如何使用构建程序来创建我们在 AhcComponent 上配置的 AsyncHttpClientConfig

在 Camel 2.9 中,AHC 组件使用 Async HTTP 库 1.6.4。这个更新的版本添加了对普通 bean 风格的配置的支持。AsyncHttpClientConfigBean 类为 AsyncHttpClientConfig 中的配置选项提供 getters 和 setters。AsyncHttpClientConfigBean 实例可以直接传递到 AHC 组件,或使用 clientConfig URI 参数在端点 URI 中引用。

Camel 2.9 中还提供直接在 URI 中设置配置选项的功能。以 "clientConfig." 开头的 URI 参数可用于设置 AsyncHttpClientConfig 的各种可配置属性。端点 URI 中指定的属性与 "clientConfig" URI 参数引用的配置中指定的属性合并,使用 "clientConfig." 参数进行设置。引用的 AsyncHttpClientConfig 实例始终为每个端点复制,使得任何之前创建的端点上的设置将保持独立于任何之前创建的端点。以下示例演示了如何使用 "clientConfig." 类型 URI 参数来配置 AHC 组件。

from("direct:start")
    .to("ahc:http://localhost:8080/foo?clientConfig.maxRequestRetry=3&clientConfig.followRedirects=true")
Copy to Clipboard Toggle word wrap

3.15. SSL 支持(HTTPS)

使用 JSSE 配置实用程序

从 Camel 2.9 开始,AHC 组件通过 Camel JSSE 配置实用程序 支持 SSL/TLS 配置。  这个实用程序可大大减少您需要编写的组件特定代码的数量,并在端点和组件级别进行配置。  以下示例演示了如何将 实用程序与 AHC 组件搭配使用。

组件的程序配置

KeyStoreParameters ksp = new KeyStoreParameters();
ksp.setResource("/users/home/server/keystore.jks");
ksp.setPassword("keystorePassword");

KeyManagersParameters kmp = new KeyManagersParameters();
kmp.setKeyStore(ksp);
kmp.setKeyPassword("keyPassword");

SSLContextParameters scp = new SSLContextParameters();
scp.setKeyManagers(kmp);

AhcComponent component = context.getComponent("ahc", AhcComponent.class);
component.setSslContextParameters(scp));
Copy to Clipboard Toggle word wrap

基于 Spring DSL 端点配置

...
  <camel:sslContextParameters
      id="sslContextParameters">
    <camel:keyManagers
        keyPassword="keyPassword">
      <camel:keyStore
          resource="/users/home/server/keystore.jks"
          password="keystorePassword"/>
    </camel:keyManagers>
  </camel:sslContextParameters>...
...
  <to uri="ahc:https://localhost/foo?sslContextParameters=#sslContextParameters"/>
...
Copy to Clipboard Toggle word wrap

3.16. 另请参阅

第 4 章 AHC Websocket 组件

作为 Camel 版本 2.14 可用

ahc-ws 组件为通过 Websocket 与外部服务器通信的客户端提供基于 Websocket 的端点(作为打开与外部服务器的 websocket 连接的客户端)。
组件使用 AHC 组件,它使用了 Async Http Client 库。

Maven 用户需要将以下依赖项添加到其 pom.xml 中:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-ahc-ws</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

4.1. URI 格式

ahc-ws://hostname[:port][/resourceUri][?options]
ahc-wss://hostname[:port][/resourceUri][?options]
Copy to Clipboard Toggle word wrap

默认情况下,将端口 80 用于 ahc-wss,使用 443 作为 ahc-wss。

4.2. AHC-WS 选项

由于 AHC-WS 组件基于 AHC 组件,您可以使用 AHC 组件的不同配置选项。

AHC Websocket 组件支持 8 个选项,它们如下所列。

Expand
名称描述默认类型

client (advanced)

使用自定义 AsyncHttpClient

 

AsyncHttpClient

binding (advanced)

使用自定义 AhcBinding,它可以控制如何在 AHC 和 Camel 之间绑定。

 

AhcBinding

clientConfig (advanced)

将 AsyncHttpClient 配置为使用自定义 com.ning.http.client.AsyncHttpClientConfig 实例。

 

AsyncHttpClientConfig

sslContextParameters (security)

引用 registry 中的 org.apache.camel.util.jsse.SSLContextParameters。请注意,配置这个选项将覆盖通过端点或组件级别的 clientConfig 选项提供的任何 SSL/TLS 配置选项。

 

SSLContextParameters

allowJavaSerialized Object (advanced)

当请求使用 context-type=application/x-java-serialized-object (默认为 off)时,是否允许 java serialization。如果您启用此功能,Java 将把传入的数据从请求中反序列化为 Java,这可能会成为潜在的安全风险。

false

布尔值

useGlobalSslContext Parameters (security)

启用使用全局 SSL 上下文参数。

false

布尔值

headerFilterStrategy (filter)

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

 

HeaderFilterStrategy

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

AHC Websocket 端点使用 URI 语法配置:

ahc-ws:httpUri
Copy to Clipboard Toggle word wrap

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

4.2.1. 路径名(1 参数):

Expand
名称描述默认类型

httpUri

要使用的 URI,如 http://hostname:port/path

 

URI

4.2.2. 查询参数(18 参数):

Expand
名称描述默认类型

bridgeEndpoint (common)

如果 选项为 true,则忽略 Exchange.HTTP_URI 标头,并使用端点的 URI 请求。您也可以将 throwExceptionOnFailure 设为 false,以便 AhcProducer 发送所有故障响应。

false

布尔值

bufferSize (common)

在 Camel 和 AHC 客户端之间传输数据时使用的初始内存缓冲大小。

4096

int

headerFilterStrategy (common)

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

 

HeaderFilterStrategy

throwExceptionOnFailure (common)

如果来自远程服务器的失败响应,禁用引发 AhcOperationFailedException 的选项。这可让您获得所有响应,无论 HTTP 状态代码如何。

true

布尔值

transferException (common)

如果启用并交换在消费者端的处理失败,如果导致的 Exception 在响应中作为 application/x-java-serialized-object 内容类型(例如,使用 Jetty 或 Servlet Camel 组件)发送了序列化处理。在制作者端,异常会按原样进行反序列化和引发,而不是 AhcOperationFailedException。导致的异常需要被序列化。默认情况下关闭。如果您启用此功能,Java 将把传入的数据从请求中反序列化为 Java,这可能会成为潜在的安全风险。

false

布尔值

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

sendMessageOnError (consumer)

如果 web-socket 侦听器收到错误,是否发送一条消息。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

connectionClose (producer)

定义是否需要将 Connection Close 标头添加到 HTTP Request 中。此参数默认为 false

false

布尔值

cookieHandler (producer)

配置 Cookie 处理程序以维护 HTTP 会话

 

CookieHandler

useStreaming (producer)

要启用流将数据作为多个文本片段发送。

false

布尔值

binding (advanced)

使用自定义 AhcBinding,它可以控制如何在 AHC 和 Camel 之间绑定。

 

AhcBinding

clientConfig (advanced)

将 AsyncHttpClient 配置为使用自定义 com.ning.http.client.AsyncHttpClientConfig 实例。

 

AsyncHttpClientConfig

clientConfigOptions (advanced)

使用 map 中的键/值配置 AsyncHttpClientConfig。

 

map

同步 (高级)

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

false

布尔值

clientConfigRealmOptions (security)

使用 map 中的 key/value 配置 AsyncHttpClientConfig Realm。

 

map

sslContextParameters (security)

引用 registry 中的 org.apache.camel.util.jsse.SSLContextParameters。这个引用会覆盖组件级别的任何配置的 SSLContextParameters。请参阅使用 JSSE 配置实用程序。请注意,配置这个选项将覆盖通过端点或组件级别的 clientConfig 选项提供的任何 SSL/TLS 配置选项。

 

SSLContextParameters

4.3. Spring Boot Auto-Configuration

组件支持 9 个选项,如下所示。

Expand
名称描述默认类型

camel.component.ahc-ws.allow-java-serialized-object

当请求使用 context-type=application/x-java-serialized-object (默认为 off)时,是否允许 java serialization。如果您启用此功能,Java 将把传入的数据从请求中反序列化为 Java,这可能会成为潜在的安全风险。

false

布尔值

camel.component.ahc-ws.binding

使用自定义 AhcBinding,它可以控制如何在 AHC 和 Camel 之间绑定。选项是一个 org.apache.camel.component.ahc.AhcBinding 类型。

 

字符串

camel.component.ahc-ws.client

使用自定义 AsyncHttpClient。选项是 org.asynchttpclient.AsyncHttpClient 类型。

 

字符串

camel.component.ahc-ws.client-config

将 AsyncHttpClient 配置为使用自定义 com.ning.http.client.AsyncHttpClientConfig 实例。选项是 org.asynchttpclient.AsyncHttpClientConfig 类型。

 

字符串

camel.component.ahc-ws.enabled

启用 ahc-ws 组件

true

布尔值

camel.component.ahc-ws.header-filter-strategy

使用自定义 org.apache.camel.spi.HeaderFilterStrategy 过滤来自 Camel 消息的标头。选项是一个 org.apache.camel.spi.HeaderFilterStrategy 类型。

 

字符串

camel.component.ahc-ws.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.ahc-ws.ssl-context-parameters

引用 registry 中的 org.apache.camel.util.jsse.SSLContextParameters。请注意,配置这个选项将覆盖通过端点或组件级别的 clientConfig 选项提供的任何 SSL/TLS 配置选项。选项是一个 org.apache.camel.util.jsse.SSLContextParameters 类型。

 

字符串

camel.component.ahc-ws.use-global-ssl-context-parameters

启用使用全局 SSL 上下文参数。

false

布尔值

4.4. 通过 Websocket 编写和阅读数据

ahc-ws 端点可以根据端点分别配置为制作者或消费者,将数据写入套接字或从套接字读取。

4.5. 配置 URI 以写入或读取数据

在以下路由中,Camel 将写入指定的 websocket 连接。

from("direct:start")
        .to("ahc-ws://targethost");
Copy to Clipboard Toggle word wrap

以及对等的 Spring 示例:

<camelContext xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="direct:start"/>
    <to uri="ahc-ws://targethost"/>
  </route>
</camelContext>
Copy to Clipboard Toggle word wrap

在以下路由中,Camel 会从指定的 websocket 连接中读取。

from("ahc-ws://targethost")
        .to("direct:next");
Copy to Clipboard Toggle word wrap

以及对等的 Spring 示例:

<camelContext xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="ahc-ws://targethost"/>
    <to uri="direct:next"/>
  </route>
</camelContext>
Copy to Clipboard Toggle word wrap

 

4.6. 另请参阅

第 5 章 AMQP 组件

可作为 Camel 版本 1.2 提供

amqp: 组件支持使用 Qpid 项目的 JMS 客户端 API 的 AMQP 1.0 协议。如果要使用 AMQP 0.9 (特别是 RabbitMQ 中),您可能还对 Camel RabbitMQ 组件感兴趣。请注意,在 Camel 2.17.0 AMQP 组件之前支持 AMQP 0.9 及更高版本,但从 Camel 2.17.0 开始,它只支持 AMQP 1.0。

Maven 用户需要将以下依赖项添加到其 pom.xml 中:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-amqp</artifactId>
    <version>${camel.version}</version> <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

5.1. URI 格式

amqp:[queue:|topic:]destinationName[?options]
Copy to Clipboard Toggle word wrap

5.2. AMQP 选项

您可以在目的地名称后指定 JMS 组件的所有配置选项。

AMQP 组件支持下面列出的 81 选项。

Expand
名称描述默认类型

配置 (高级)

使用共享的 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
Copy to Clipboard Toggle word wrap

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

5.2.1. 路径名(2 参数):

Expand
名称描述默认类型

destinationType

要使用的目的地种类

队列

字符串

destinationName

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

 

字符串

5.2.2. 查询参数(92 参数):

Expand
名称描述默认类型

clientId (common)

设置要使用的 JMS 客户端 ID。请注意,这个值必须是唯一的,且只能供单个 JMS 连接实例使用。通常只有持久主题订阅才是必需的。如果使用 Apache ActiveMQ,您可以改为使用虚拟主题。

 

字符串

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 消息类型。此选项允许您指定它。

 

JmsMessageType

testConnectionOnStartup (common)

指定是否在启动时测试连接。这可确保当 Camel 启动时,所有 JMS 用户都具有与 JMS 代理的有效连接。如果无法授予连接,Camel 会在启动时抛出异常。这样可确保 Camel 没有启动失败的连接。JMS 生产商也进行了测试。

false

布尔值

acknowledgementModeName (consumer)

JMS 确认名称之一: SESSION_TRANSACTED、CLIENT_ACKNOWLEDGE、AUTO_ACKNOWLEDGE、DUPS_OK_ACKNOWLEDGE

AUTO_ ACKNOWLEDGE

字符串

asyncConsumer (consumer)

JmsConsumer 是否异步处理 Exchange。如果启用,则 JmsConsumer 可能会从 JMS 队列获取下一个消息,而上一消息正在异步处理(通过异步路由引擎)。这意味着,消息可以被严格处理,按顺序处理。如果禁用(默认),则在 JmsConsumer 将从 JMS 队列中获取下一个消息之前,将完全处理 Exchange。请注意,如果已启用翻译,则 asyncConsumer=true 不会异步运行,因为事务必须同步执行(Camel 3.0 可能支持 async 事务)。

false

布尔值

autoStartup (consumer)

指定使用者容器是否应该自动启动。

true

布尔值

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 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 时,选项回复ToConcurrentConsumers 用于控制回复消息监听器上的并发用户数量。

1

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 域)时,这种方法才会切换到 pubSubDomain 标志。

false

布尔值

subscriptionName (consumer)

设置要创建的订阅的名称。要应用一个带有共享或 durable 订阅的主题(pub-sub 域)。订阅名称需要在这个客户端的 JMS 客户端 ID 中唯一。default 是指定消息监听程序的类名称。注:每个订阅只允许 1 个并发使用者(默认是此消息监听器容器),但共享订阅除外(需要 JMS 2.0)。

 

字符串

subscriptionShared (consumer)

设置是否使订阅共享。可以通过 subscriptionName 属性指定要使用的共享订阅名称。默认为 false。将其设置为 true 以注册共享订阅,通常与 subscriptionName 值结合使用(除非您的消息监听程序类名称已足够符合订阅名称)。请注意,共享订阅也可能是持久的,因此此标志也可以(并经常将)与订阅相整合。只有侦听主题(pub-sub 域)时,这种方法才会切换到 pubSubDomain 标志。需要 JMS 2.0 兼容消息代理。

false

布尔值

acceptMessagesWhileStopping (consumer)

指定使用者接受消息在停止时是否指定。如果您在运行时启动和停止 JMS 路由,则请考虑启用这个选项,同时队列上仍有消息 enqueued。如果这个选项为 false,并且您停止了 JMS 路由,则消息可能会被拒绝,并且 JMS 代理必须尝试重定位,但再次再次可能被拒绝,最后消息可能会在 JMS 代理上的死信队列移动。为了避免这一建议启用这个选项。

false

布尔值

allowReplyManagerQuickStop (consumer)

如果 JmsConfiguration#isAcceptMessagesWhileStopping 在启用 JmsConfiguration#isAcceptMessagesWhileStopping 时,并且 org.apache.camel.Camel.CamelContext 当前已经停止。常规 JMS 用户默认启用这一快速停止功能,但为了回复经理,您必须启用此标志。

false

布尔值

consumerType (consumer)

要使用的使用者类型,可以是:简单、默认或 Custom。使用者类型决定要使用的 Spring JMS 侦听器。默认情况下,将使用 org.springframework.jms.listener.DefaultMessageListenerContainer,SimpleMessageListenerContainer 将使用 org.springframework.jms.listener.SimpleMessageListenerContainer。指定 Custom 时,由 messageListenerContainerFactory 选项定义的 MessageListenerContainerFactory 将决定要使用的 org.springframework.jms.listener.AbstractMessageListenerContainer。

默认

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)

要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 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 服务质量。这个选项基于 Spring 的 JmsTemplate。deliveryMode、priority 和 timeToLive 选项应用到当前的端点。这与 preserveMessageQos 选项不同,该选项以消息粒度运行,从 Camel In message 标头专门读取 QoS 属性。

false

布尔值

formatDateHeadersToIso8601 (producer)

设置 JMS date 属性是否应该根据 ISO 8601 标准进行格式化。

false

布尔值

preserveMessageQos (producer)

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

false

布尔值

priority (producer)

高于 1 的值在发送时指定消息优先级(其中 0 是最低优先级),以及 9 是最高优先级。还必须启用显式QosEnabled 选项,才能使此选项生效。

4

int

replyToConcurrentConsumers (producer)

指定在进行请求/相对于 JMS 时的默认并发用户数量。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。

1

int

replyToMaxConcurrent Consumers (producer)

指定在 JMS 中使用请求/回复时的最大并发用户数量。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。

 

int

replyToOnTimeoutMax ConcurrentConsumers (producer)

指定在使用 request/reply over JMS 时超时发生时持续路由的并发使用者的最大数量。

1

int

replyToOverride (producer)

在 JMS 消息中提供显式 ReplyTo 目标,可覆盖回复商的设置。如果要将消息转发到远程队列并接收来自 ReplyTo 目的地的回复消息,这很有用。

 

字符串

replyToType (producer)

允许显式指定在进行请求/恢复 JMS 时用于回复队列的策略。可能的值有:Trimporary、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,并且消息正文为空,则将引发 JMSException。

true

布尔值

alwaysCopyMessage (producer)

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

false

布尔值

correlationProperty (producer)

使用 InOut Exchange 模式使用此 JMS 属性而不是 JMSCorrelationID JMS 属性来关联消息。如果设置消息将被仅与此属性 JMSCorrelationID 属性的值关联,则 Camel 不会设置。

 

字符串

disableTimeToLive (producer)

使用这个选项强制禁用时间实时。例如,当您通过 JMS 进行请求/推荐时,Camel 默认将使用 requestTimeout 值作为正在发送的消息上的实时。问题是发送者和接收器系统必须同步其时钟,因此它们正在同步。这不是始终如此容易的归档。因此,您可以使用 disableTimeToLive=true 将发送消息中的时间设置为 live 值。然后,信息不会在接收方系统中过期。如需了解更多详细信息,请参阅关于时间至 live 的部分。

false

布尔值

forceSendOriginalMessage (producer)

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

false

布尔值

includeSentJMSMessageID (producer)

仅适用于使用 InOnly 发送到 JMS 目的地(请触发和忘记)。启用此选项将丰富的 Camel Exchange 与 JMS 客户端在消息发送到 JMS 目的地时使用的实际 JMSMessageID 一起丰富。

false

布尔值

replyToCacheLevelName (producer)

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

 

字符串

replyToDestinationSelector Name (producer)

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

 

字符串

streamMessageTypeEnabled (producer)

设定是否启用 StreamMessage 类型。消息有效负载的流传输类型(如文件、InputStream 等)将作为 BytesMessage 或 StreamMessage 发送。此选项控制将使用哪一种类型。默认情况下使用 BytesMessage,它强制读取到内存中的完整消息有效负载。通过启用此选项,消息有效负载在块中读取到内存中,每个块都会写入 StreamMessage,直到没有更多数据。

false

布尔值

allowSerializedHeaders (advanced)

控制是否包含序列化标头。仅在 transferExchange 为 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。默认情况下,如果没有配置错误处理程序,则这些异常会记录在 WARN 级别。您可以配置日志记录级别,以及是否应使用 errorHandlerLoggingLevel 和 errorHandlerLogStackTrace 选项记录堆栈追踪。这样可以更容易配置,而不是对自定义错误处理程序进行编码。

 

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 提供了两个开箱即用的实现:默认和直通。默认策略将安全汇总点和连字符(. 和 -)。passthrough 策略会保留密钥,即:可用于不小心 JMS 标头键是否包含非法字符的 JMS 代理。您可以自行实施 org.apache.camel.component.jms.JmsKeyFormatStrategy,并使用 # 表示法引用它。

 

字符串

mapJmsMessage (advanced)

指定 Camel 是否应将收到的 JMS 消息自动映射到合适的载荷类型,如 javax.jms.TextMessage 到字符串等。

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 发送 JMS 消息时,将在 Camel 创建新实例 javax.jms.Message 对象时来调用。

 

MessageCreatedStrategy

messageIdEnabled (advanced)

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

true

布尔值

messageListenerContainer Factory (advanced)

用于决定要消耗消息的 org.springframework.jms.listener.AbstractMessageListenerContainer 的 registry ID。设置此设置将自动将 consumerType 设置为 Custom。

 

MessageListener ContainerFactory

messageTimestampEnabled (advanced)

指定在发送消息时是否应默认启用时间戳。这只是一个到 JMS 代理的提示。如果 JMS 供应商接受这个 hint,这些消息必须将时间戳设置为零。如果供应商忽略了提示,时间戳必须设置为其正常值

true

布尔值

pubSubNoLocal (advanced)

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

false

布尔值

receiveTimeout (advanced)

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

1000

long

recoveryInterval (advanced)

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

5000

long

requestTimeoutChecker Interval (advanced)

配置在通过 JMS 进行请求时,Camel 应该检查超时交换的频率。默认情况下,Camel 会检查每秒一次。但是,如果发生超时时您必须更快地做出反应,那么您可以降低这个间隔,以更频繁地检查。超时由选项 requestTimeout 决定。

1000

long

同步 (高级)

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

false

布尔值

transferException (高级)

如果启用并且您正在使用 Request Reply messaging (InOut),并且一个 Exchange 在使用者端失败,则会导致 Exception 发回为 javax.jms.ObjectMessage。如果客户端是 Camel,则返回的 Exception 会被重新箭头。这样,您可以使用 Camel JMS 作为路由中的网桥 - 例如,使用持久性队列来启用可靠的路由。请注意,如果您也启用了 transferExchange,则此选项将具有优先权。请注意的异常需要是序列化的。使用者端的原始例外可以包装在外部异常中,如 org.apache.camel.RuntimeCamelException (返回到制作者)。

false

布尔值

transferExchange (advanced)

您可以通过线路传输交换,而不只是正文和标头。传输以下字段如下:正文、出站正文、容错正文、入口、出口标头、容错标头、交换属性、交换异常。这要求对象是序列化的。Camel 将排除任何非序列化对象,并在 WARN 级别记录它。您必须在制作者和消费者端启用此选项,因此 Camel 知道有效负载是 Exchange,而非常规有效负载。

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

布尔值

useMessageIDAsCorrelation ID (advanced)

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

false

布尔值

waitForProvisionCorrelation ToBeUpdatedCounter (advanced)

在对 JMS 进行请求/恢复请求时,等待 provisional 关联 id 会被更新为实际关联 id 的次数,以及选项 useMessageIDAsCorrelationID。

50

int

waitForProvisionCorrelation ToBeUpdatedThreadSleeping Time (advanced)

millis 在等待 provisional correlation id 被更新期间,每次处于睡眠状态的时间间隔。

100

long

errorHandlerLoggingLevel (logging)

允许配置默认错误处理程序日志记录级别,以记录异常。

WARN

LoggingLevel

errorHandlerLogStackTrace (logging)

允许控制是否应该记录堆栈追踪,默认错误处理程序。

true

布尔值

密码 (安全)

要用于 ConnectionFactory 的密码。您还可以直接在 ConnectionFactory 上配置用户名/密码。

 

字符串

username (security)

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

 

字符串

transacted (transaction)

指定是否使用翻译模式

false

布尔值

lazyCreateTransaction Manager (transaction)

如果为 true,如果选项 transacted=true 中没有注入事务管理器,Camel 会创建一个 JmsTransactionManager。

true

布尔值

transactionManager (transaction)

要使用的 Spring 事务管理器。

 

platformTransaction Manager

transactionName (transaction)

要使用的事务的名称。

 

字符串

transactionTimeout (transaction)

事务的超时值(以秒为单位)。

-1

int

5.3. Spring Boot Auto-Configuration

组件支持 81 选项,它们如下所列。

Expand
名称描述默认类型

camel.component.amqp.accept-messages-while-stopping

指定使用者接受消息在停止时是否指定。如果您在运行时启动和停止 JMS 路由,则请考虑启用这个选项,同时队列上仍有消息 enqueued。如果这个选项为 false,并且您停止了 JMS 路由,则消息可能会被拒绝,并且 JMS 代理必须尝试重定位,但再次再次可能被拒绝,最后消息可能会在 JMS 代理上的死信队列移动。为了避免这一建议启用这个选项。

false

布尔值

camel.component.amqp.acknowledgement-mode

JMS 确认模式定义为 Integer。允许您将特定于供应商的扩展设置为 acknowledgment 模式。对于常规模式,最好使用 acknowledgementModeName。

 

整数

camel.component.amqp.acknowledgement-mode-name

JMS 确认名称之一: SESSION_TRANSACTED、CLIENT_ACKNOWLEDGE、AUTO_ACKNOWLEDGE、DUPS_OK_ACKNOWLEDGE

AUTO_ ACKNOWLEDGE

字符串

camel.component.amqp.allow-additional-headers

此选项用于允许可能具有根据 JMS 规格无效的值的额外标头。例如,一些消息系统(如 WMQ)使用前缀 JMS_IBM_MQMD_(包含字节阵列或其他无效类型的值)使用标头名称来执行此操作。您可以用逗号分隔的多个标头名称,并用作通配符匹配后缀。

 

字符串

camel.component.amqp.allow-null-body

是否允许在没有正文的情况下发送消息。如果此选项为 false,并且消息正文为空,则将引发 JMSException。

true

布尔值

camel.component.amqp.allow-reply-manager-quick-stop

如果 JmsConfiguration#isAcceptMessagesWhileStopping 在启用 JmsConfiguration#isAcceptMessagesWhileStopping 时,并且 org.apache.camel.Camel.CamelContext 当前已经停止。常规 JMS 用户默认启用这一快速停止功能,但为了回复经理,您必须启用此标志。

false

布尔值

camel.component.amqp.always-copy-message

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

false

布尔值

camel.component.amqp.async-consumer

JmsConsumer 是否异步处理 Exchange。如果启用,则 JmsConsumer 可能会从 JMS 队列获取下一个消息,而上一消息正在异步处理(通过异步路由引擎)。这意味着,消息可以被严格处理,按顺序处理。如果禁用(默认),则在 JmsConsumer 将从 JMS 队列中获取下一个消息之前,将完全处理 Exchange。请注意,如果已启用翻译,则 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 连接实例使用。通常只有持久主题订阅才是必需的。如果使用 Apache ActiveMQ,您可以改为使用虚拟主题。

 

字符串

camel.component.amqp.concurrent-consumers

指定使用 JMS 时的默认并发用户数(不用于请求/相对 JMS)。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。当执行请求/相对于 JMS 时,选项回复ToConcurrentConsumers 用于控制回复消息监听器上的并发用户数量。

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 模式(request-reply)而不是 JMSCorrelationID 属性关联。这样,您可以使用 JMSCorrelationID JMS 属性将消息与不关联消息的系统交换。如果未使用 JMSCorrelationID,则 Camel 将不会被使用或设置。如果未在同一名称下的消息标题中提供,则生成此指定属性的值。

 

字符串

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。默认情况下,如果没有配置错误处理程序,则这些异常会记录在 WARN 级别。您可以配置日志记录级别,以及是否应使用 errorHandlerLoggingLevel 和 errorHandlerLogStackTrace 选项记录堆栈追踪。这样可以更容易配置,而不是对自定义错误处理程序进行编码。选项是一个 org.springframework.util.ErrorHandler 类型。

 

字符串

camel.component.amqp.error-handler-log-stack-trace

允许控制是否应该记录堆栈追踪,默认错误处理程序。

true

布尔值

camel.component.amqp.error-handler-logging-level

允许配置默认错误处理程序日志记录级别,以记录异常。

 

LoggingLevel

camel.component.amqp.exception-listener

指定任何底层 JMS 异常通知的 JMS Exception Listener。选项是 javax.jms.ExceptionListener 类型。

 

字符串

camel.component.amqp.explicit-qos-enabled

设定在发送消息时应使用 deliveryMode、priority 或 timeToLive 服务质量。这个选项基于 Spring 的 JmsTemplate。deliveryMode、priority 和 timeToLive 选项应用到当前的端点。这与 preserveMessageQos 选项不同,该选项以消息粒度运行,从 Camel In message 标头专门读取 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 目的地(请触发和忘记)。启用此选项将丰富的 Camel Exchange 与 JMS 客户端在消息发送到 JMS 目的地时使用的实际 JMSMessageID 一起丰富。

false

布尔值

camel.component.amqp.jms-key-format-strategy

用于编码和解码 JMS 密钥的可插拔策略,以便它们符合 JMS 规范。Camel 提供了两个开箱即用的实现:默认和直通。默认策略将安全汇总点和连字符(. 和 -)。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 中没有注入事务管理器,Camel 会创建一个 JmsTransactionManager。

true

布尔值

camel.component.amqp.map-jms-message

指定 Camel 是否应将收到的 JMS 消息自动映射到合适的载荷类型,如 javax.jms.TextMessage 到字符串等。

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 发送 JMS 消息时,将在 Camel 创建新实例 javax.jms.Message 对象时来调用。选项是一个 org.apache.camel.component.jms.MessageCreatedStrategy 类型。

 

字符串

camel.component.amqp.message-id-enabled

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

true

布尔值

camel.component.amqp.message-timestamp-enabled

指定在发送消息时是否应默认启用时间戳。这只是一个到 JMS 代理的提示。如果 JMS 供应商接受这个 hint,这些消息必须将时间戳设置为零。如果供应商忽略了提示,时间戳必须设置为其正常值

true

布尔值

camel.component.amqp.password

要用于 ConnectionFactory 的密码。您还可以直接在 ConnectionFactory 上配置用户名/密码。

 

字符串

camel.component.amqp.preserve-message-qos

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

false

布尔值

camel.component.amqp.priority

高于 1 的值在发送时指定消息优先级(其中 0 是最低优先级),以及 9 是最高优先级。还必须启用显式QosEnabled 选项,才能使此选项生效。

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

指定在使用 request/reply over JMS 时超时发生时持续路由的并发使用者的最大数量。

1

整数

camel.component.amqp.reply-to-cache-level-name

在通过 JMS 进行请求/回复消费者时,按照名称设置缓存级别。这个选项只适用于使用固定的回复队列(而不是临时)。Camel 默认使用:CACHE_CONSUMER 用于独占或共享 w/ replyToSelectorName。以及在没有 replyToSelectorName 的情况下共享的 CACHE_SESSION。有些 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 时用于回复队列的策略。可能的值有:Trimporary、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

配置在通过 JMS 进行请求时,Camel 应该检查超时交换的频率。默认情况下,Camel 会检查每秒一次。但是,如果发生超时时您必须更快地做出反应,那么您可以降低这个间隔,以更频繁地检查。超时由选项 requestTimeout 决定。

1000

Long

camel.component.amqp.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.amqp.stream-message-type-enabled

设定是否启用 StreamMessage 类型。消息有效负载的流传输类型(如文件、InputStream 等)将作为 BytesMessage 或 StreamMessage 发送。此选项控制将使用哪一种类型。默认情况下使用 BytesMessage,它强制读取到内存中的完整消息有效负载。通过启用此选项,消息有效负载在块中读取到内存中,每个块都会写入 StreamMessage,直到没有更多数据。

false

布尔值

camel.component.amqp.subscription-durable

设置是否使订阅持久。要使用的持久订阅名称可以通过 subscriptionName 属性指定。默认为 false。将其设置为 true 以注册持久的订阅,通常与 subscriptionName 值结合使用(除非您的消息监听器类名称足够好作为订阅名称)。只有侦听主题(pub-sub 域)时,这种方法才会切换到 pubSubDomain 标志。

false

布尔值

camel.component.amqp.subscription-name

设置要创建的订阅的名称。要应用一个带有共享或 durable 订阅的主题(pub-sub 域)。订阅名称需要在这个客户端的 JMS 客户端 ID 中唯一。default 是指定消息监听程序的类名称。注:每个订阅只允许 1 个并发使用者(默认是此消息监听器容器),但共享订阅除外(需要 JMS 2.0)。

 

字符串

camel.component.amqp.subscription-shared

设置是否使订阅共享。可以通过 subscriptionName 属性指定要使用的共享订阅名称。默认为 false。将其设置为 true 以注册共享订阅,通常与 subscriptionName 值结合使用(除非您的消息监听程序类名称已足够符合订阅名称)。请注意,共享订阅也可能是持久的,因此此标志也可以(并经常将)与订阅相整合。只有侦听主题(pub-sub 域)时,这种方法才会切换到 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 生产商也进行了测试。

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 会被重新箭头。这样,您可以使用 Camel JMS 作为路由中的网桥 - 例如,使用持久性队列来启用可靠的路由。请注意,如果您也启用了 transferExchange,则此选项将具有优先权。请注意的异常需要是序列化的。使用者端的原始例外可以包装在外部异常中,如 org.apache.camel.RuntimeCamelException (返回到制作者)。

false

布尔值

camel.component.amqp.transfer-exchange

您可以通过线路传输交换,而不只是正文和标头。传输以下字段如下:正文、出站正文、容错正文、入口、出口标头、容错标头、交换属性、交换异常。这要求对象是序列化的。Camel 将排除任何非序列化对象,并在 WARN 级别记录它。您必须在制作者和消费者端启用此选项,因此 Camel 知道有效负载是 Exchange,而非常规有效负载。

false

布尔值

camel.component.amqp.transfer-fault

如果启用且您使用 Request Reply messaging (InOut)和 Exchange failed,在消费者端使用 SOAP 故障(而非例外),则 Message#isFault ()上的 fault 标志将重新作为带有键 org.apache.camelcomponent.jms.JmsConstants #JMS_TRANSFOTER_JMS 标头的 JMS 标头来回发送。如果客户端是 Camel,则返回的 fault 标志将在 org.apache.camel.Message#setFault (布尔值)上设置。在使用支持故障的 Camel 组件(如 cxf 或 spring-ws)时,您可能需要启用此功能。

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 进行请求/恢复请求时,等待 provisional 关联 id 会被更新为实际关联 id 的次数,以及选项 useMessageIDAsCorrelationID。

50

整数

camel.component.amqp.wait-for-provision-correlation-to-be-updated-thread-sleeping-time

millis 在等待 provisional correlation id 被更新期间,每次处于睡眠状态的时间间隔。

100

Long

5.4. 使用

由于 AMQP 组件从 JMS 组件继承,以前的用法与后者几乎相同:

使用 AMQP 组件

// Consuming from AMQP queue
from("amqp:queue:incoming").
  to(...);
 
// Sending message to the AMQP topic
from(...).
  to("amqp:topic:notify");
Copy to Clipboard Toggle word wrap

5.5. 配置 AMQP 组件

从 Camel 2.16.1 开始,您还可以使用 AMQPComponent#amqp10Component (String connectionURI) factory 方法返回 AMQP 1.0 组件,使用预先配置的主题前缀: 

创建 AMQP 1.0 组件

 AMQPComponent amqp = AMQPComponent.amqp10Component("amqp://guest:guest@localhost:5672");
Copy to Clipboard Toggle word wrap

请记住,从 Camel 2.17 开始, AMQPComponent#amqp10Component (String connectionURI) 工厂方法的代表 AMQPComponent#amqpComponent (String connectionURI) 已被弃用: 

创建 AMQP 1.0 组件

AMQPComponent amqp = AMQPComponent.amqpComponent("amqp://localhost:5672");
 
AMQPComponent authorizedAmqp = AMQPComponent.amqpComponent("amqp://localhost:5672", "user", "password");
Copy to Clipboard Toggle word wrap

从 Camel 2.17 开始,若要自动配置 AMQP 组件,您还可以向注册表添加 org.apache.camel.component.amqp.AMQPConnectionDetails 实例。例如,对于 Spring Boot,您必须定义 bean:

AMQP 连接详情自动配置

@Bean
AMQPConnectionDetails amqpConnection() {
  return new AMQPConnectionDetails("amqp://localhost:5672");
}
 
@Bean
AMQPConnectionDetails securedAmqpConnection() {
  return new AMQPConnectionDetails("amqp://localhost:5672", "username", "password");
}
Copy to Clipboard Toggle word wrap

同样,在使用 Camel-CDI 时也可以使用 CDI producer 方法

AMQP 连接详情用于 CDI 的自动配置

@Produces
AMQPConnectionDetails amqpConnection() {
  return new AMQPConnectionDetails("amqp://localhost:5672");
}
Copy to Clipboard Toggle word wrap

您还可以依赖 Camel 属性来读取 AMQP 连接详情。factory 方法 AMQPConnectionDetails.discoverAMQP () 尝试在类似 Kubernetes 的约定中读取 Camel 属性,具体如以下代码片段所示:

AMQP 连接详情自动配置

export AMQP_SERVICE_HOST = "mybroker.com"
export AMQP_SERVICE_PORT = "6666"
export AMQP_SERVICE_USERNAME = "username"
export AMQP_SERVICE_PASSWORD = "password"
 
...
 
@Bean
AMQPConnectionDetails amqpConnection() {
  return AMQPConnectionDetails.discoverAMQP();
}
Copy to Clipboard Toggle word wrap

启用 AMQP 特定选项

例如,如果需要启用 amqp.traceFrames,您可以通过将 选项附加到 URI 来执行此操作,如下例所示:

AMQPComponent amqp = AMQPComponent.amqpComponent("amqp://localhost:5672?amqp.traceFrames=true");
Copy to Clipboard Toggle word wrap

要参考,请查看 QPID JMS 客户端配置

5.6. 使用主题

要使用与 camel-amqp 相关的主题,您需要配置组件以使用 topic:// 作为主题前缀,如下所示:

 <bean id="amqp" class="org.apache.camel.component.amqp.AmqpComponent">
   <property name="connectionFactory">
     <bean class="org.apache.qpid.jms.JmsConnectionFactory" factory-method="createFromURL">
       <property name="remoteURI" value="amqp://localhost:5672" />
       <property name="topicPrefix" value="topic://" />  <!-- only necessary when connecting to ActiveMQ over AMQP 1.0 -->
     </bean>
   </property>
 </bean>
Copy to Clipboard Toggle word wrap

请记住,AMQPComponent#amqpComponent () 方法和 AMQPConnectionDetails 都会预先配置该组件,因此您不必显式配置它。

5.7. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用

第 6 章 APNS 组件

可作为 Camel 版本 2.8 使用

apns 组件用于将通知发送到 iOS 设备。apns 组件使用 javapns 库。
组件支持向 Apple Push Notification Servers (APNS)发送通知并消耗来自服务器的反馈。

默认情况下,消费者配置了 3600 秒以进行轮询,因为最佳实践是仅使用 Apple Push Notification Servers 中的内容流仅从时间到时间。例如: 每小时每小时避免损坏服务器。

反馈流提供有关不活跃设备的信息。如果您的移动应用程序没有大量使用时,您只需要在数小时获取此信息。

Maven 用户需要将以下依赖项添加到其 pom.xml 中:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-apns</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

6.1. URI 格式

发送通知:

apns:notify[?options]
Copy to Clipboard Toggle word wrap

使用反馈:

apns:consumer[?options]
Copy to Clipboard Toggle word wrap

6.2. 选项

APNS 组件支持 2 个选项,它们如下所列。

Expand
名称描述默认类型

apnsService (common)

需要使用 ApnsService。org.apache.camel.component.apns.factory.ApnsServiceFactory 可用于构建 ApnsService

 

ApnsService

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

APNS 端点使用 URI 语法配置:

apns:name
Copy to Clipboard Toggle word wrap

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

6.2.1. 路径名(1 参数):

Expand
名称描述默认类型

name

端点的名称

 

字符串

6.2.2. 查询参数(20 参数):

Expand
名称描述默认类型

tokens (common)

如果要静态声明与您要通知的设备相关的令牌,请配置此属性。令牌用逗号分开。

 

字符串

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

sendEmptyMessageWhenIdle (consumer)

如果轮询使用者没有轮询任何文件,您可以启用这个选项来发送空消息(无正文)。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

pollStrategy (consumer)

可插拔 org.apache.camel.PollingConsumerPollingStrategy 允许您提供自定义实施来控制在轮询操作中通常会发生错误处理,然后再在 Camel 中创建并被路由。

 

PollingConsumerPoll Strategy

同步 (高级)

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

false

布尔值

backoffErrorThreshold (scheduler)

后续错误轮询(因某些错误导致的失败)的数量,在 backoffMultipler 应该启动前发生。

 

int

backoffIdleThreshold (scheduler)

后续闲置轮询的数量,在 backoffMultipler 应该启动之前发生。

 

int

backoffMultiplier (scheduler)

如果行中有多个后续闲置/errors,让调度的轮询消费者重新关闭。然后,倍数是下一次实际尝试发生前跳过的轮询数量。当使用这个选项时,还必须配置 backoffIdleThreshold 和/or backoffErrorThreshold。

 

int

延迟 (scheduler)

下次轮询前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。

500

long

greedy (scheduler)

如果启用了 greedy,则 ScheduledPollConsumer 将立即再次运行,如果上一运行轮询了 1 或更多消息。

false

布尔值

initialDelay (scheduler)

第一次轮询启动前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。

1000

long

runLoggingLevel (scheduler)

消费者日志轮询轮询时启动/完成日志行。此选项允许您为其配置日志级别。

TRACE

LoggingLevel

scheduledExecutorService (scheduler)

允许配置用于使用者的自定义/共享线程池。默认情况下,每个使用者都有自己的单个线程池。

 

ScheduledExecutor 服务

调度程序 (scheduler)

使用来自 camel-spring 或 camel-quartz2 组件的 cron 调度程序

none

ScheduledPollConsumer Scheduler

schedulerProperties (scheduler)

在使用自定义调度程序或任何基于 Spring 的调度程序时配置额外属性。

 

map

startScheduler (scheduler)

调度程序是否应自动启动。

true

布尔值

timeUnit (scheduler)

初始延迟和延迟选项的时间单位。

毫秒

TimeUnit

useFixedDelay (scheduler)

控制是否使用固定延迟或固定率。详情请参阅 JDK 中的 ScheduledExecutorService。

true

布尔值

6.3. Spring Boot Auto-Configuration

组件支持 3 个选项,它们如下所列。

Expand
名称描述默认类型

camel.component.apns.apns-service

要使用的 ApnsService。org.apache.camel.component.apns.factory.ApnsServiceFactory 可用于构建 ApnsService。选项为 com.notnoop.apns.ApnsService 类型。

 

字符串

camel.component.apns.enabled

启用 apns 组件

true

布尔值

camel.component.apns.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

您可以使用以下格式在 URI 中附加查询选项 ?option=value&option=value&…​

6.3.1. 组件

ApnsComponent 必须使用 com.notnoop.apns.ApnsService 进行配置。可以使用 org.apache.camel.component.apns.factory.ApnsServiceFactory 创建和配置该服务。请参阅以下示例。以及测试 源代码

6.3.1.1. SSL 设置

要使用安全连接,org.apache.camel.jsse.jsse.SSLContextParameters 实例应当注入到 org.apache.camel.component.apns.factory.ApnsServiceFactory,用于配置该组件。如需示例,请参阅 test 资源。SSL 示例

6.4. 交换数据格式

当 Camel 获取与不活跃设备对应的反馈数据时,它将检索 InactiveDevice 对象列表。检索列表的每个 InactiveDevice 对象将设置为 In body,然后由消费者端点处理。

6.5. 消息标头

Camel Apns 使用这些标头。

Expand
属性默认描述

CamelApnsTokens

 

默认为空。

CamelApnsMessageType

字符串、载荷、PNS_NOTIFICATION 

如果您选择 PAYLOAD 作为消息类型,则消息将被视为 APNS 有效负载,并以 身份发送。如果选择 STRING,则会将消息转换为 APNS 有效负载。从采用 APNS_NOTIFICATION 的 Camel 2.16,用于将邮件正文作为 com.notnoop.apns.ApnsNotification 类型发送。

6.6. ApnsServiceFactory builder callback

ApnsServiceFactory 附带了一个空的回调方法,可用于配置(甚至替换)默认的 ApnsServiceBuilder 实例。方法的签名如下:

protected ApnsServiceBuilder configureServiceBuilder(ApnsServiceBuilder serviceBuilder);
Copy to Clipboard Toggle word wrap

可使用如下方式:

ApnsServiceFactory proxiedApnsServiceFactory = new ApnsServiceFactory(){
  
  @Override
  protected ApnsServiceBuilder configureServiceBuilder(ApnsServiceBuilder serviceBuilder) {
    return serviceBuilder.withSocksProxy("my.proxy.com", 6666);
  }

};
Copy to Clipboard Toggle word wrap

6.7. Samples

6.7.1. Camel Xml 路由

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:camel="http://camel.apache.org/schema/spring"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

    <!-- Replace by desired values -->
    <bean id="apnsServiceFactory" class="org.apache.camel.component.apns.factory.ApnsServiceFactory">

        <!-- Optional configuration of feedback host and port -->
        <!-- <property name="feedbackHost" value="localhost" /> -->
        <!-- <property name="feedbackPort" value="7843" /> -->

        <!-- Optional configuration of gateway host and port -->
        <!-- <property name="gatewayHost" value="localhost" /> -->
        <!-- <property name="gatewayPort" value="7654" /> -->

        <!-- Declaration of certificate used -->
                <!-- from Camel 2.11 onwards you can use prefix: classpath:, file: to refer to load the certificate from classpath or file. Default it classpath -->
        <property name="certificatePath" value="certificate.p12" />
        <property name="certificatePassword" value="MyCertPassword" />

        <!-- Optional connection strategy - By Default: No need to configure -->
        <!-- Possible options: NON_BLOCKING, QUEUE, POOL or Nothing -->
        <!-- <property name="connectionStrategy" value="POOL" /> -->
        <!-- Optional pool size -->
        <!-- <property name="poolSize" value="15" /> -->

        <!-- Optional connection strategy - By Default: No need to configure -->
        <!-- Possible options: EVERY_HALF_HOUR, EVERY_NOTIFICATION or Nothing (Corresponds to NEVER javapns option) -->
        <!-- <property name="reconnectionPolicy" value="EVERY_HALF_HOUR" /> -->
    </bean>

    <bean id="apnsService" factory-bean="apnsServiceFactory" factory-method="getApnsService" />

    <!-- Replace this declaration by wanted configuration -->
    <bean id="apns" class="org.apache.camel.component.apns.ApnsComponent">
        <property name="apnsService" ref="apnsService" />
    </bean>

    <camelContext id="camel-apns-test" xmlns="http://camel.apache.org/schema/spring">
            <route id="apns-test">
                    <from uri="apns:consumer?initialDelay=10&amp;delay=3600&amp;timeUnit=SECONDS" />
                    <to uri="log:org.apache.camel.component.apns?showAll=true&amp;multiline=true" />
                    <to uri="mock:result" />
            </route>
    </camelContext>

</beans>
Copy to Clipboard Toggle word wrap

6.7.2. Camel Java 路由

创建 camel 上下文并以编程方式声明 apns 组件

    protected CamelContext createCamelContext() throws Exception {
        CamelContext camelContext = super.createCamelContext();

        ApnsServiceFactory apnsServiceFactory = new ApnsServiceFactory();
        apnsServiceFactory.setCertificatePath("classpath:/certificate.p12");
        apnsServiceFactory.setCertificatePassword("MyCertPassword");

        ApnsService apnsService = apnsServiceFactory.getApnsService(camelContext);

        ApnsComponent apnsComponent = new ApnsComponent(apnsService);
        camelContext.addComponent("apns", apnsComponent);

        return camelContext;
    }
Copy to Clipboard Toggle word wrap

[[APNS-ApnsProducer-iOStargetdevicedynamicallyconfiguredviaheader:"CamelApnsTokens"]] ApnsProducer - iOS 目标设备通过标头 "CamelApnsTokens"

    protected RouteBuilder createRouteBuilder() throws Exception {
        return new RouteBuilder() {
            public void configure() throws Exception {
                from("direct:test")
                    .setHeader(ApnsConstants.HEADER_TOKENS, constant(IOS_DEVICE_TOKEN))
                    .to("apns:notify");
                }
        }
    }
Copy to Clipboard Toggle word wrap

ApnsProducer - iOS 目标设备通过 uri 静态配置

    protected RouteBuilder createRouteBuilder() throws Exception {
        return new RouteBuilder() {
            public void configure() throws Exception {
                from("direct:test").
                to("apns:notify?tokens=" + IOS_DEVICE_TOKEN);
            }
        };
    }
Copy to Clipboard Toggle word wrap

ApnsConsumer

from("apns:consumer?initialDelay=10&delay=3600&timeUnit=SECONDS")
    .to("log:com.apache.camel.component.apns?showAll=true&multiline=true")
    .to("mock:result");
Copy to Clipboard Toggle word wrap

6.8. 另请参阅

第 7 章 ASN.1 File DataFormat

可作为 Camel 版本 2.20 可用

ASN.1 数据格式数据格式 [Intoduction to ASN.1](https://www.itu.int/en/ITU-T/asn1/Pages/introduction.aspx)是一个 Camel Framework 的数据格式实现,它基于 Bouncy Castle 的 bcprov-jdk15on 库和 jASN.1 的 Java 编译器,用于描述通过电信协议传输的数据格式的实施,无论这些数据在语言的实施和物理表示,均很复杂。消息可以解封(版本至简单的 Java POJO)到普通 Java 对象。通过帮助 Camel 路由引擎和数据转换,您可以使用 POJO (POJO)进行工作,并应用定制格式并应用定制格式,并调用其他 Camel 组件将消息转换为上游系统。

7.1. ASN.1 数据格式选项

ASN.1 文件数据格式支持 3 个选项,它们如下所列。

Expand
名称默认Java 类型描述

usingIterator

false

布尔值

如果 asn1 文件含有多个条目,那么将此选项设置为 true,允许使用 splitter EIP,以流模式使用它分割数据。

clazzName

 

字符串

取消编出时使用的类名称

contentTypeHeader

false

布尔值

如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。

7.2. Spring Boot Auto-Configuration

组件支持 4 个选项,如下所示。

Expand
名称描述默认类型

camel.dataformat.asn1.clazz-name

取消编出时使用的类名称

 

字符串

camel.dataformat.asn1.content-type-header

如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。

false

布尔值

camel.dataformat.asn1.enabled

是否启用自动配置 asn1 数据格式。默认启用。

 

布尔值

camel.dataformat.asn1.using-iterator

如果 asn1 文件含有多个条目,那么将此选项设置为 true,允许使用 splitter EIP,以流模式使用它分割数据。

false

布尔值

ND

7.3. unmarshal

有 3 种不同的方法可以集出 ASN.1 结构化消息。(通常是二进制文件)

在第一个示例中,我们向 OutputStream 传播的文件有效负载,并将其发送到模拟端点。

from("direct:unmarshal").unmarshal(asn1).to("mock:unmarshal");
Copy to Clipboard Toggle word wrap

在第二个示例中,我们使用 Split EIP 将文件有效负载分到字节阵列。应用 Split EIP 的原因通常是每个 BER 文件或(ASN.1 结构化文件)包含多个记录来处理;Split EIP 有助于我们将文件中的每条记录作为字节阵列(实际上是 ASN1Primitive's ASN)的实例(利用 Bouncy Castle 的 ASN bcprov-jdk15on 库中的 .1 支持者数组,可能会被转换为 ASN1Primitive (ASN1Primitive.fromByteArray)的帮助,例如: 请注意,您需要使用 Iterator=true进行设置

from("direct:unmarshal").unmarshal(asn1).split(body(Iterator.class)).streaming().to("mock:unmarshal");
Copy to Clipboard Toggle word wrap

在最后一个示例中,我们使用 Split EIP 将文件有效负载分到普通 Java 对象。上例中已提到应用 Split EIP 的原因。请注意,请记住,原因。在本例中,我们还需要通过数据格式设置类或 <YourObject>.class 引用的完全限定名称。这里要注意的一点是,Jasn1 编译器应该已经生成您的对象,它是一个 nice 工具来生成您的 ASN.1 结构的 java 对象表示。有关 jasn1 编译器的参考信息,请参阅 [JASN.1 项目页面](https://www.openmuc.org/asn1/)。另外,还了解如何使用 maven 的 exec 插件调用编译器。例如,在这种数据格式的单元测试中,在 src/test/resources/asn/asn1 中添加了一个示例 ASN.1 结构 (TestSMSBerCdr.asn/java/asn1 编译器。jasn1 编译器会在 ${basedir}/target/generated/src/test/java 中生成。

from("direct:unmarshaldsl")
         .unmarshal()
         .asn1("org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr")
         .split(body(Iterator.class)).streaming()
.to("mock:unmarshaldsl");
Copy to Clipboard Toggle word wrap

7.4. 依赖项

要在 camel 路由中使用 ASN.1 数据格式,您需要添加对 camel-asn1 的依赖关系,该格式实施此数据格式。

如果使用 Maven,您只需在 pom.xml 中添加以下内容,替换最新和最长版本的版本号(请参阅最新版本的下载页面)。

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-asn1</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

第 8 章 AS2 组件

重要

Karaf 的 camel-as2 组件只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。

这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。有关红帽技术预览功能支持范围的更多信息,请参阅 https://access.redhat.com/support/offerings/techpreview

可作为 Camel 版本 2.22 可用

AS2 组件使用 RFC4130 中指定的 HTTP 传输协议提供 EDI 消息传输。

注意

这个组件目前正在进行中。预计这个组件的未来版本中要更改 URI 选项和路径和查询参数。

Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-as2</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

8.1. URI 格式

as2://apiName/methodName
Copy to Clipboard Toggle word wrap

apiName 可以是以下之一:

  • client
  • server

8.2. AS2 选项

AS2 组件支持 2 个选项,它们如下所列。

Expand
名称描述默认类型

configuration (common)

使用共享配置

 

AS2Configuration

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

AS2 端点使用 URI 语法配置:

as2:apiName
Copy to Clipboard Toggle word wrap

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

8.2.1. 路径名(1 参数):

Expand
名称描述默认类型

apiName

需要 什么操作才能执行

 

AS2ApiName

8.2.2. 查询参数(30 参数):

Expand
名称描述默认类型

as2From (common)

AS2From 标头的 AS2From 标头的值。

 

字符串

as2MessageStructure (common)

AS2 消息的结构.其中之一:PLAIN - No encryption, no signature, SIGNED - No encryption, signature, ENCRYPTED - Encryption, no signature, ENCRYPTED_SIGNED - Encryption, 签名

 

AS2MessageStructure

as2To (common)

AS2To 标头的 AS2To 标头的值。

 

字符串

as2Version (common)

AS2 协议的版本。

1.1

字符串

clientFqdn (common)

Client Fully Qualified Domain Name (FQDN)。用于端点发送的消息 ID 中。

camel.apache.org

字符串

dispositionNotificationTo (common)

Disposition-Notification-To 标头的值。为此参数分配一个值,为 AS2 消息请求消息分散通知(MDN)。

 

字符串

ediMessageTransferEncoding (common)

EDI 消息的传输编码。

 

字符串

ediMessageType (common)

EDI 消息的内容类型。应用程序/制造商之一、应用程序/或x12、应用程序/委员会

 

ContentType

encryptingAlgorithm (common)

用于加密 EDI 消息的算法。

 

AS2EncryptionAlgorithm

encryptingCertificateChain (common)

用于加密 EDI 消息的证书链。

 

Certificate[]

encryptingPrivateKey (common)

用于加密 EDI 消息的密钥。

 

PrivateKey

from (common)

AS2 消息的 From 标头的值。

 

字符串

inBody (common)

设置在 Exchange In Body 中传递的参数名称

 

字符串

methodName (common)

所选操作需要什么子操作

 

字符串

requestUri (common)

EDI 消息的请求 URI。

/

字符串

server (common)

包括在服务器消息标题中标识 AS2 服务器的值。

Camel AS2 服务器端点

字符串

serverFqdn (common)

Server Fully Qualified Domain Name (FQDN)。用于端点发送的消息 ID 中。

camel.apache.org

字符串

serverPortNumber (common)

服务器的端口号。

 

整数

signedReceiptMicAlgorithms (common)

算法列表,按首选项顺序排列,在消息处理通知(MDN)中生成消息完整性检查(MIC)将返回的消息完整性检查(MIC)

 

String[]

signingAlgorithm (common)

用于签署 EDI 消息的算法。

 

AS2SignatureAlgorithm

signingCertificateChain (common)

用于签署 EDI 消息的证书链。

 

Certificate[]

signingPrivateKey (common)

用于为 EDI 消息签名的密钥。

 

PrivateKey

subject (common)

AS2 消息的 Subject 标头的值。

 

字符串

targetHostname (common)

目标主机的主机名(IP 或 DNS 名称)。

 

字符串

targetPortNumber (common)

目标主机的端口号。-1 表示方案默认端口。

 

整数

userAgent (common)

包括在 User-Agent 消息标头中的值来标识 AS2 用户代理。

Camel AS2 客户端端点

字符串

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

同步 (高级)

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

false

布尔值

8.3. Spring Boot Auto-Configuration

组件支持 28 个选项,它们如下所列。

Expand
名称描述默认类型

camel.component.as2.configuration.api-name

要执行的操作种类

 

AS2ApiName

camel.component.as2.configuration.as2-from

AS2From 标头的 AS2From 标头的值。

 

字符串

camel.component.as2.configuration.as2-message-structure

AS2 消息的结构.其中之一:PLAIN - No encryption, no signature, SIGNED - No encryption, signature, ENCRYPTED - Encryption, no signature, ENCRYPTED_SIGNED - Encryption, 签名

 

AS2MessageStructure

camel.component.as2.configuration.as2-to

AS2To 标头的 AS2To 标头的值。

 

字符串

camel.component.as2.configuration.as2-version

AS2 协议的版本。

1.1

字符串

camel.component.as2.configuration.client-fqdn

Client Fully Qualified Domain Name (FQDN)。用于端点发送的消息 ID 中。

camel.apache.org

字符串

camel.component.as2.configuration.disposition-notification-to

Disposition-Notification-To 标头的值。为此参数分配一个值,为 AS2 消息请求消息分散通知(MDN)。

 

字符串

camel.component.as2.configuration.edi-message-transfer-encoding

EDI 消息的传输编码。

 

字符串

camel.component.as2.configuration.edi-message-type

EDI 消息的内容类型。应用程序/制造商之一、应用程序/或x12、应用程序/委员会

 

ContentType

camel.component.as2.configuration.encrypting-algorithm

用于加密 EDI 消息的算法。

 

AS2EncryptionAlgorithm

camel.component.as2.configuration.encrypting-certificate-chain

用于加密 EDI 消息的证书链。

 

Certificate[]

camel.component.as2.configuration.encrypting-private-key

用于加密 EDI 消息的密钥。

 

PrivateKey

camel.component.as2.configuration.from

AS2 消息的 From 标头的值。

 

字符串

camel.component.as2.configuration.method-name

用于所选操作的子操作

 

字符串

camel.component.as2.configuration.request-uri

EDI 消息的请求 URI。

/

字符串

camel.component.as2.configuration.server

包括在服务器消息标题中标识 AS2 服务器的值。

Camel AS2 服务器端点

字符串

camel.component.as2.configuration.server-fqdn

Server Fully Qualified Domain Name (FQDN)。用于端点发送的消息 ID 中。

camel.apache.org

字符串

camel.component.as2.configuration.server-port-number

服务器的端口号。

 

整数

camel.component.as2.configuration.signed-receipt-mic-algorithms

算法列表,按首选项顺序排列,在消息处理通知(MDN)中生成消息完整性检查(MIC)将返回的消息完整性检查(MIC)

 

String[]

camel.component.as2.configuration.signing-algorithm

用于签署 EDI 消息的算法。

 

AS2SignatureAlgorithm

camel.component.as2.configuration.signing-certificate-chain

用于签署 EDI 消息的证书链。

 

Certificate[]

camel.component.as2.configuration.signing-private-key

用于为 EDI 消息签名的密钥。

 

PrivateKey

camel.component.as2.configuration.subject

AS2 消息的 Subject 标头的值。

 

字符串

camel.component.as2.configuration.target-hostname

目标主机的主机名(IP 或 DNS 名称)。

 

字符串

camel.component.as2.configuration.target-port-number

目标主机的端口号。-1 表示方案默认端口。

 

整数

camel.component.as2.configuration.user-agent

包括在 User-Agent 消息标头中的值来标识 AS2 用户代理。

Camel AS2 客户端端点

字符串

camel.component.as2.enabled

是否启用 as2 组件的自动配置。默认启用。

 

布尔值

camel.component.as2.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

8.4. 客户端端点:

客户端端点使用端点前缀 客户端,后接方法的名称及下一个描述的关联选项。端点 URI MUST 包含前缀 客户端

as2://client/method?[options]
Copy to Clipboard Toggle word wrap

不是必需的端点选项由 [] 表示。如果端点没有强制选项,则会提供一组 [] 选项 MUST。制作者端点也可以使用特殊选项 inBody ,它应当包含该端点选项的名称,其值将包含在 Camel Exchange In 消息中。

端点 URI 中都可以提供任何端点选项,或者在消息标头中动态提供。消息标头名称必须是 CamelAS2.<option> 的格式。请注意, inBody 选项会覆盖消息标头,例如, Body=option 中的 endpoint 选项会覆盖 CamelAS2.option 标头。

如果没有为端点 URI 中的选项 defaultRequest 提供值,则它将假定为 null。请注意,只有其它选项不满足匹配的端点时,才会使用 null 值。

如果是 AS2 API 错误,端点将抛出 RuntimeCamelException 和 org.apache.http.HttpException 派生异常原因。

Expand
方法选项结果 Body 类型

send

ediMessage, requestUri, subject, from, as2From, as2To, as2MessageStructure, ediMessageContentType, ediMessageTransferEncoding, dispositionNotificationTo, signedReceiptMicAlgorithms

org.apache.http.protocol.HttpCoreContext

客户端的URI 选项

Expand
名称类型

ediMessage

字符串

requestUri

字符串

subject

字符串

from

字符串

as2From

字符串

as2To

字符串

as2MessageStructure

org.apache.camel.component.as2.api.AS2MessageStructure

ediMessageContentType

字符串

ediMessageTransferEncoding

字符串

dispositionNotificationTo

字符串

signedReceiptMicAlgorithms

String[]

8.5. 服务器端点:

服务器端点使用端点前缀 server,后跟一个方法的名称以及接下来描述的关联选项。端点 URI MUST 包含前缀 服务器

as2://server/method?[options]
Copy to Clipboard Toggle word wrap

不是必需的端点选项由 [] 表示。如果端点没有强制选项,则会提供一组 [] 选项 MUST。制作者端点也可以使用特殊选项 inBody ,它应当包含该端点选项的名称,其值将包含在 Camel Exchange In 消息中。

端点 URI 中都可以提供任何端点选项,或者在消息标头中动态提供。消息标头名称必须是 CamelAS2.<option> 的格式。请注意, inBody 选项会覆盖消息标头,例如, Body=option 中的 endpoint 选项会覆盖 CamelAS2.option 标头。

如果没有为端点 URI 中的选项 defaultRequest 提供值,则它将假定为 null。请注意,只有其它选项不满足匹配的端点时,才会使用 null 值。

如果是 AS2 API 错误,端点将抛出 RuntimeCamelException 和 org.apache.http.HttpException 派生异常原因。

Expand
方法选项结果 Body 类型

listen

requestUriPattern

org.apache.http.protocol.HttpCoreContext

服务器的URI 选项

Expand
名称类型

requestUriPattern

字符串

第 9 章 星号组件

作为 Camel 2.18 版提供

星号: 组件允许您使用星号对 PBX 服务器 http://www.asterisk.org/ 轻松工作 https://asterisk-java.org/

此组件有助于与 Asterisk Manager 接口进行接口

Maven 用户需要将以下依赖项添加到其 pom.xml 中:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-asterisk</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

9.1. URI 格式

asterisk:name[?options]
Copy to Clipboard Toggle word wrap

9.2. 选项

Asterisk 组件没有选项。

Asterisk 端点使用 URI 语法配置:

asterisk:name
Copy to Clipboard Toggle word wrap

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

9.2.1. 路径名(1 参数):

Expand
名称描述默认类型

name

所需 的逻辑名称

 

字符串

9.2.2. 查询参数(8 参数):

Expand
名称描述默认类型

hostname (common)

所需的 星号服务器的主机名

 

字符串

password (common)

所需的 登录密码

 

字符串

username (common)

所需的 登录用户名

 

字符串

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

action (producer)

要执行的操作,如获取队列状态、sip 对等点或扩展状态。

 

AsteriskAction

同步 (高级)

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

false

布尔值

9.3. Spring Boot Auto-Configuration

组件支持 2 个选项,如下所示。

Expand
名称描述默认类型

camel.component.asterisk.enabled

启用星号组件

true

布尔值

camel.component.asterisk.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

9.4. 操作

支持的操作包括:

  • QUEUE_STATUS, 队列状态
  • SIP_PEERS, List SIP Peers
  • EXTENSION_STATE, Check Extension 状态

第 10 章 Atmos 组件

作为 Camel 版本 2.15 可用

Camel-Atmos 是一个 Apache Camel 组件,允许您使用 Atmos 客户端 来处理 ViPR 对象数据服务。

from("atmos:foo/get?remotePath=/path").to("mock:test");
Copy to Clipboard Toggle word wrap

10.1. 选项

Atmos 组件支持 5 个选项,它们如下所列。

Expand
名称描述默认类型

fullTokenId (security)

传递给 Atmos 客户端的令牌 ID

 

字符串

secretKey (security)

传递给 Atmos 客户端的 secret 密钥

 

字符串

uri (advanced)

Atmos 客户端连接的服务器的 URI

 

字符串

sslValidation (security)

Atmos 客户端是否应该执行 SSL 验证

false

布尔值

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

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

atmos:name/operation
Copy to Clipboard Toggle word wrap

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

10.1.1. 路径名(2 参数):

Expand
名称描述默认类型

name

Atmos 名称

 

字符串

operation

执行 所需的操作

 

AtmosOperation

10.1.2. 查询参数(12 参数):

Expand
名称描述默认类型

enableSslValidation (common)

Atmos SSL 验证

false

布尔值

fullTokenId (common)

Atmos 客户端 fullTokenId

 

字符串

localPath (common)

放置文件的本地路径

 

字符串

newRemotePath (common)

移动文件时在 Atmos 上的新路径

 

字符串

query (common)

在 Atmos 上搜索查询

 

字符串

remotePath (common)

在 Atmos 上放置文件的位置

 

字符串

secretKey (common)

Atmos 共享 secret

 

字符串

uri (common)

Atomos server uri

 

字符串

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

同步 (高级)

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

false

布尔值

10.2. Spring Boot Auto-Configuration

组件支持 6 个选项,它们如下所列。

Expand
名称描述默认类型

camel.component.atmos.enabled

启用 atmos 组件

true

布尔值

camel.component.atmos.full-token-id

传递给 Atmos 客户端的令牌 ID

 

字符串

camel.component.atmos.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.atmos.secret-key

传递给 Atmos 客户端的 secret 密钥

 

字符串

camel.component.atmos.ssl-validation

Atmos 客户端是否应该执行 SSL 验证

false

布尔值

camel.component.atmos.uri

Atmos 客户端连接的服务器的 URI

 

字符串

10.3. 依赖项

要在 camel 路由中使用 Atmos,您需要添加实现此数据格式的 camel-atmos 依赖项。

如果您使用 maven,只需在 pom.xml 中添加以下内容,替换最新和最高版本的版本号(请参阅最新版本的下载页面)。

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-atmos</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

10.4. 集成

当您查看mos 集成时,有一种类型的消费者 GetConsumer,它是 ScheduledPollConsumer 类型。

  • Get

其中有 4 种类型的制作者

  • Get
  • Del
  • Move
  • put

10.5. 例子

这些示例是从测试中获取的:

from("atmos:foo/get?remotePath=/path").to("mock:test");
Copy to Clipboard Toggle word wrap

下面是一个消费者的示例。remotePath 代表数据要读取的路径,并将 camel Exchange 传递给制作者 Underneath,此组件将mos 客户端 API 用于此和其他操作。

from("direct:start")
.to("atmos://get?remotePath=/dummy/dummy.txt")
.to("mock:result");
Copy to Clipboard Toggle word wrap

在这里,这是一个制作者示例。remotePath 表示操作在 ViPR 对象数据服务上发生的路径。在制作者中,操作(GetDelMovePut)在 ViPR 对象数据服务上运行,结果由 camel Exchange 的标头设置。

关于操作,会在 camel exhange 中设置以下标头

DOWNLOADED_FILE, DOWNLOADED_FILES, UPLOADED_FILE, UPLOADED_FILES, FOUND_FILES, DELETED_PATH, MOVED_PATH;
Copy to Clipboard Toggle word wrap

10.6. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用

第 11 章 Atmosphere Websocket 组件

作为 Camel 版本 2.14 可用

atmosphere-websocket: 组件为通过 Websocket 与外部客户端通信的 servlet 提供基于 Websocket 的端点(作为 servlet 接受来自外部客户端的 websocket 连接)。
组件使用 SERVLET 组件,并使用 Atmosphere 库来支持各种 Servlet 容器中的 Websocket 传输(如 Jetty、Tomcat、…​)。

与启动嵌入式 Jetty 服务器的 Websocket 组件不同,该组件使用容器的 servlet 供应商。

Maven 用户需要将以下依赖项添加到其 pom.xml 中:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-atmosphere-websocket</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

11.1. Atmosphere-Websocket 选项

Atmosphere Websocket 组件支持 9 个选项,它们如下所列。

Expand
名称描述默认类型

servletName (consumer)

要使用的默认 servlet 名称。默认名称为 CamelServlet。

CamelServlet

字符串

httpRegistry (consumer)

使用自定义 org.apache.camel.component.servlet.HttpRegistry。

 

HttpRegistry

附加多部分绑定 (使用者)

是否会在 Camel Exchange 上自动绑定多部分/信息数据作为附件。选项附加MultipartBinding=true 和 disableStreamCache=false 无法一起工作。删除 disableStreamCache 以使用 AttachmentMultipartBinding。这将默认关闭,因为这可能需要 servlet 特定配置在使用 Servlet 时启用此功能。

false

布尔值

fileNameExtWhitelist (consumer)

接受上传的文件的接受文件名扩展白名单。多个扩展可以通过逗号分隔,如 txt,xml。

 

字符串

httpBinding (advanced)

使用自定义 HttpBinding 控制 Camel 消息和 HttpClient 之间的映射。

 

HttpBinding

httpConfiguration (advanced)

使用共享 HttpConfiguration 作为基本配置。

 

HttpConfiguration

allowJavaSerialized Object (advanced)

请求使用 context-type=application/x-java-serialized-object 时,是否允许 java serialization。默认情况下关闭。如果您启用此功能,Java 将把传入的数据从请求中反序列化为 Java,这可能会成为潜在的安全风险。

false

布尔值

headerFilterStrategy (filter)

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

 

HeaderFilterStrategy

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

Atmosphere Websocket 端点使用 URI 语法配置:

atmosphere-websocket:servicePath
Copy to Clipboard Toggle word wrap

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

11.1.1. 路径名(1 参数):

Expand
名称描述默认类型

servicePath

websocket 端点 所需的 名称

 

字符串

11.1.2. 查询参数(38 参数):

Expand
名称描述默认类型

chunked (common)

如果这个选项为 false,则 Servlet 将禁用 HTTP 流并在响应上设置内容长度的标头

true

布尔值

disableStreamCache (common)

确定 Servlet 的原始输入流是否已缓存(Camel 将读取流到文件,流缓存)缓存。默认情况下,Camel 会缓存 Servlet 输入流,以支持多次读取它,以确保 Camel 可以从流检索所有数据。但是,当您需要访问原始流(如直接流传输到文件或其他持久性存储)时,您可以将这个选项设置为 true。DefaultHttpBinding 会将请求输入流复制到流缓存中,如果这个选项为 false,则会将其放入消息正文,以便支持多次读取流。如果使用 Servlet 桥接/代理端点,请考虑启用这个选项来提高性能,如果不需要多次读取消息有效负载。http/http4 producer 默认将缓存响应正文流。如果将此选项设置为 true,则生产者不会缓存响应正文流,而是使用响应流,作为消息正文。

false

布尔值

headerFilterStrategy (common)

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

 

HeaderFilterStrategy

sendToAll (common)

是否发送到所有(广播)还是发送到单个接收器。

false

布尔值

transferException (common)

如果对使用者端启用和交换失败处理,并且如果导致的例外在响应中作为应用程序/x-java-serialized-object 内容类型发送回序列化,则进行后定。在制作者端,异常会按原样进行反序列化和丢弃,而不是 HttpOperationFailedException。导致的异常需要被序列化。默认情况下关闭。如果您启用此功能,Java 将把传入的数据从请求中反序列化为 Java,这可能会成为潜在的安全风险。

false

布尔值

useStreaming (common)

要启用流将数据作为多个文本片段发送。

false

布尔值

httpBinding (common)

使用自定义 HttpBinding 控制 Camel 消息和 HttpClient 之间的映射。

 

HttpBinding

async (consumer)

将消费者配置为以同步模式工作

false

布尔值

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

httpMethodRestrict (consumer)

仅用于允许消耗 HttpMethod 匹配,如 GET/POST/PUT 等。可以使用逗号分隔多个方法。

 

字符串

matchOnUriPrefix (consumer)

如果找不到完全匹配,则使用者是否应该尝试通过匹配 URI 前缀来查找目标使用者。

false

布尔值

responseBufferSize (consumer)

使用 javax.servlet.ServletResponse 的自定义缓冲区大小。

 

整数

servletName (consumer)

要使用的 servlet 的名称

CamelServlet

字符串

attachmentMultipartBinding (consumer)

是否会在 Camel Exchange 上自动绑定多部分/信息数据作为附件。选项附加MultipartBinding=true 和 disableStreamCache=false 无法一起工作。删除 disableStreamCache 以使用 AttachmentMultipartBinding。这将默认关闭,因为这可能需要 servlet 特定配置在使用 Servlet 时启用此功能。

false

布尔值

eagerCheckContentAvailable (consumer)

是否预先检查 HTTP 请求是否有内容(如果 content-length 标头为 0 )是否有内容。这可在问题单中打开 HTTP 客户端不会发送流化数据。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

fileNameExtWhitelist (consumer)

接受上传的文件的接受文件名扩展白名单。多个扩展可以通过逗号分隔,如 txt,xml。

 

字符串

optionsEnabled (consumer)

指定是否为这个 Servlet consumer 启用 HTTP OPTIONS。默认情况下,OPTIONS 会被关闭。

false

布尔值

traceEnabled (consumer)

指定是否为这个 Servlet consumer 启用 HTTP TRACE。默认关闭 TRACE。

false

布尔值

bridgeEndpoint (producer)

如果 选项为 true,HttpProducer 将忽略 Exchange.HTTP_URI 标头,并使用端点的 URI 请求。您也可以将选项 throwExceptionOnFailure 设为 false,使 HttpProducer 发送所有故障响应。

false

布尔值

connectionClose (producer)

指定是否需要将 Connection Close 标头添加到 HTTP Request 中。默认情况下 connectionClose 为 false。

false

布尔值

copyHeaders (producer)

如果这个选项为 true,则根据复制策略将 IN Exchange 标头复制到 OUT Exchange 标头。将其设置为 false,仅允许包括 HTTP 响应中的标头(不会传播 IN 标头)。

true

布尔值

httpMethod (producer)

配置要使用的 HTTP 方法。如果设置,HttpMethod 标头无法覆盖这个选项。

 

HttpMethods

ignoreResponseBody (producer)

如果这个选项为 true,则 http producer 不会读取响应正文并缓存输入流

false

布尔值

preserveHostHeader (producer)

如果选项为 true,HttpProducer 会将 Host 标头设置为当前交换主机标头中包含的值,对于您希望下游服务器收到的主机标头,可以使用 Host 标头为代理应用程序生成准确的 URL。

false

布尔值

throwExceptionOnFailure (producer)

禁用丢弃 HttpOperationFailedException 的选项(如果来自远程服务器的响应失败)。这可让您获得所有响应,无论 HTTP 状态代码如何。

true

布尔值

cookieHandler (producer)

配置 Cookie 处理程序以维护 HTTP 会话

 

CookieHandler

okStatusCodeRange (producer)

被视为成功响应的状态代码。值包括:可以定义多个范围,以逗号分隔,例如 200-204,209,301-304。每个范围必须是单个数字,或使用包括横线的短划线。

200-299

字符串

urlRewrite (producer)

弃用了 自定义的 org.apache.camel.component.http.UrlRewrite,它允许您在网桥/proxy 端点时重写 url。更多信息请参阅 http://camel.apache.org/urlrewrite.html

 

UrlRewrite

mapHttpMessageBody (advanced)

如果此选项正确,则交换正文将映射到 HTTP 正文。将其设置为 false 将避免 HTTP 映射。

true

布尔值

mapHttpMessageFormUrl EncodedBody (advanced)

如果这个选项为 true,则交换的 IN Exchange Form Encode 正文将映射到 HTTP。将其设置为 false 可以避免 HTTP Form Encoded body 映射。

true

布尔值

mapHttpMessageHeaders (advanced)

如果此选项为 true,则交换的 IN Exchange Headers 将映射到 HTTP 标头。将其设置为 false 将避免 HTTP 标头映射。

true

布尔值

同步 (高级)

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

false

布尔值

proxyAuthScheme (proxy)

要使用的代理身份验证方案

 

字符串

proxyHost (proxy)

要使用的代理主机名

 

字符串

proxyPort (proxy)

要使用的代理端口

 

int

authHost (security)

要用于 NTML 的身份验证主机

 

字符串

11.2. Spring Boot Auto-Configuration

组件支持 10 个选项,如下所示。

Expand
名称描述默认类型

camel.component.atmosphere-websocket.allow-java-serialized-object

请求使用 context-type=application/x-java-serialized-object 时,是否允许 java serialization。默认情况下关闭。如果您启用此功能,Java 将把传入的数据从请求中反序列化为 Java,这可能会成为潜在的安全风险。

false

布尔值

camel.component.atmosphere-websocket.attachment-multipart-binding

是否会在 Camel Exchange 上自动绑定多部分/信息数据作为附件。选项附加MultipartBinding=true 和 disableStreamCache=false 无法一起工作。删除 disableStreamCache 以使用 AttachmentMultipartBinding。这将默认关闭,因为这可能需要 servlet 特定配置在使用 Servlet 时启用此功能。

false

布尔值

camel.component.atmosphere-websocket.enabled

启用 atmosphere-websocket 组件

true

布尔值

camel.component.atmosphere-websocket.file-name-ext-whitelist

接受上传的文件的接受文件名扩展白名单。多个扩展可以通过逗号分隔,如 txt,xml。

 

字符串

camel.component.atmosphere-websocket.header-filter-strategy

使用自定义 org.apache.camel.spi.HeaderFilterStrategy 过滤来自 Camel 消息的标头。选项是一个 org.apache.camel.spi.HeaderFilterStrategy 类型。

 

字符串

camel.component.atmosphere-websocket.http-binding

使用自定义 HttpBinding 控制 Camel 消息和 HttpClient 之间的映射。选项是一个 org.apache.camel.http.common.HttpBinding 类型。

 

字符串

camel.component.atmosphere-websocket.http-configuration

使用共享 HttpConfiguration 作为基本配置。选项是一个 org.apache.camel.http.common.HttpConfiguration 类型。

 

字符串

camel.component.atmosphere-websocket.http-registry

使用自定义 org.apache.camel.component.servlet.HttpRegistry。选项是一个 org.apache.camel.component.servlet.HttpRegistry 类型。

 

字符串

camel.component.atmosphere-websocket.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.atmosphere-websocket.servlet-name

要使用的默认 servlet 名称。默认名称为 CamelServlet。

CamelServlet

字符串

11.3. URI 格式

atmosphere-websocket:///relative path[?options]
Copy to Clipboard Toggle word wrap

11.4. 通过 Websocket 读取和编写数据

atmopshere-websocket 端点可以分别将数据写入套接字或从套接字读取数据,具体取决于端点是否配置为制作者还是消费者。

11.5. 将 URI 配置为读或写数据

在以下路由中,Camel 会从指定的 websocket 连接中读取。

from("atmosphere-websocket:///servicepath")
        .to("direct:next");
Copy to Clipboard Toggle word wrap

以及对等的 Spring 示例:

<camelContext xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="atmosphere-websocket:///servicepath"/>
    <to uri="direct:next"/>
  </route>
</camelContext>
Copy to Clipboard Toggle word wrap

在以下路由中,Camel 会从指定的 websocket 连接中读取。

from("direct:next")
        .to("atmosphere-websocket:///servicepath");
Copy to Clipboard Toggle word wrap

以及对等的 Spring 示例:

<camelContext xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="direct:next"/>
    <to uri="atmosphere-websocket:///servicepath"/>
  </route>
</camelContext>
Copy to Clipboard Toggle word wrap

 

11.6. 另请参阅

第 12 章 Atom 组件

可作为 Camel 版本 1.2 提供

atom: component 用于轮询 Atom 源。

默认情况下,Camel 将每 60 秒轮询一次源。
注: 这些组件目前仅支持轮询(耗时)源。

Maven 用户需要将以下依赖项添加到其 pom.xml 中:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-atom</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

12.1. URI 格式

atom://atomUri[?options]
Copy to Clipboard Toggle word wrap

其中,atomUri 是要轮询的 Atom 源的 URI。

12.2. 选项

Atom 组件没有选项。

Atom 端点使用 URI 语法配置:

atom:feedUri
Copy to Clipboard Toggle word wrap

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

12.2.1. 路径名(1 参数):

Expand
名称描述默认类型

feedUri

需要 要轮询的源 URI。

 

字符串

12.2.2. 查询参数(27 参数):

Expand
名称描述默认类型

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

feedHeader (consumer)

设置是否将 feed 对象添加为标头

true

布尔值

filter (consumer)

设定是否使用过滤,还是不是条目。

true

布尔值

lastUpdate (consumer)

设置用于从 atom feeds 过滤条目的时间戳。这个选项只与 splitEntries 结合使用。

 

Date

password (consumer)

设置 HTTP 源轮询时用于基本身份验证的密码

 

字符串

sendEmptyMessageWhenIdle (consumer)

如果轮询使用者没有轮询任何文件,您可以启用这个选项来发送空消息(无正文)。

false

布尔值

sortEntries (consumer)

设定是否按公布的日期对条目进行排序。仅在 splitEntries = true 时才起作用。

false

布尔值

splitEntries (consumer)

设置是否应单独发送条目,还是应将整个源作为单个消息发送

true

布尔值

throttleEntries (consumer)

设定是否应立即发送单一源轮询中的所有条目。如果为 true,则每个 consumer.delay 只处理一个条目。仅在 splitEntries = true 时才适用。

true

布尔值

username (consumer)

设置 HTTP 源轮询时用于基本身份验证的用户名

 

字符串

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

pollStrategy (consumer)

可插拔 org.apache.camel.PollingConsumerPollingStrategy 允许您提供自定义实施来控制在轮询操作中通常会发生错误处理,然后再在 Camel 中创建并被路由。

 

PollingConsumerPoll Strategy

同步 (高级)

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

false

布尔值

backoffErrorThreshold (scheduler)

后续错误轮询(因某些错误导致的失败)的数量,在 backoffMultipler 应该启动前发生。

 

int

backoffIdleThreshold (scheduler)

后续闲置轮询的数量,在 backoffMultipler 应该启动之前发生。

 

int

backoffMultiplier (scheduler)

如果行中有多个后续闲置/errors,让调度的轮询消费者重新关闭。然后,倍数是下一次实际尝试发生前跳过的轮询数量。当使用这个选项时,还必须配置 backoffIdleThreshold 和/or backoffErrorThreshold。

 

int

延迟 (scheduler)

下次轮询前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。

500

long

greedy (scheduler)

如果启用了 greedy,则 ScheduledPollConsumer 将立即再次运行,如果上一运行轮询了 1 或更多消息。

false

布尔值

initialDelay (scheduler)

第一次轮询启动前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。

1000

long

runLoggingLevel (scheduler)

消费者日志轮询轮询时启动/完成日志行。此选项允许您为其配置日志级别。

TRACE

LoggingLevel

scheduledExecutorService (scheduler)

允许配置用于使用者的自定义/共享线程池。默认情况下,每个使用者都有自己的单个线程池。

 

ScheduledExecutor 服务

调度程序 (scheduler)

使用来自 camel-spring 或 camel-quartz2 组件的 cron 调度程序

none

ScheduledPollConsumer Scheduler

schedulerProperties (scheduler)

在使用自定义调度程序或任何基于 Spring 的调度程序时配置额外属性。

 

map

startScheduler (scheduler)

调度程序是否应自动启动。

true

布尔值

timeUnit (scheduler)

初始延迟和延迟选项的时间单位。

毫秒

TimeUnit

useFixedDelay (scheduler)

控制是否使用固定延迟或固定率。详情请参阅 JDK 中的 ScheduledExecutorService。

true

布尔值

12.3. Spring Boot Auto-Configuration

组件支持 2 个选项,如下所示。

Expand
名称描述默认类型

camel.component.atom.enabled

启用 atom 组件

true

布尔值

camel.component.atom.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

您可以使用以下格式在 URI 中附加查询选项 ?option=value&option=value&…​

12.4. 交换数据格式

Camel 将在返回的 Exchange 上通过条目设置 In 正文。根据 splitEntries 标记 Camel 将返回一个 EntryList<Entry>

Expand
选项行为

splitEntries

true

只设置来自当前处理源的一个条目: Exchange. in.body (Entry)

splitEntries

false

源中的整个条目列表被设置: exchange.in.body (List<Entry>)

Camel 可以在 In 标头上设置 Feed 对象(请参阅 feedHeader 选项来禁用此选项):

12.5. 消息标头

Camel atom 使用这些标头。

Expand
标头描述

CamelAtomFeed

当使用 org.apache.abdera.model.Feed 对象时,将设置为此标头。

12.6. Samples

在本例中,我们轮询 James Strachan 的博客。

from("atom://http://macstrac.blogspot.com/feeds/posts/default").to("seda:feeds");
Copy to Clipboard Toggle word wrap

在此例中,我们希望仅过滤我们想到 SEDA 队列的良好博客。这个示例还演示了如何设置 Camel 独立,而不在任何容器或 Spring 中运行。

12.7. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • RSS

第 13 章 Atomix Map 组件

可作为 Camel 版本 2.20 可用

camel atomix-map 组件允许您使用 Atomix 的 分布式 map 集合。

Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:

    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-atomix</artifactId>
        <version>${camel-version}</version>
    </dependency>
Copy to Clipboard Toggle word wrap

13.1. URI 格式

    atomix-map:mapName
Copy to Clipboard Toggle word wrap

13.2. 选项

Atomix Map 组件支持 5 个选项,它们如下所列。

Expand
名称描述默认类型

configuration (common)

共享组件配置

 

AtomixMapConfiguration

atomix (common)

共享 AtomixClient 实例

 

AtomixClient

nodes (common)

AtomixClient 的节点应连接到

 

list

configurationUri (common)

AtomixClient 配置的路径

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

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

atomix-map:resourceName
Copy to Clipboard Toggle word wrap

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

13.2.1. 路径名(1 参数):

Expand
名称描述默认类型

resourceName

所需的 分布式资源名称

 

字符串

13.2.2. 查询参数(18 参数):

Expand
名称描述默认类型

atomix (common)

要使用的 Atomix 实例

 

Atomix

configurationUri (common)

Atomix 配置 uri.

 

字符串

defaultAction (common)

默认操作。

PUT

操作

key (common)

如果标头中没有设置任何设置或者监听特定密钥的事件,要使用的密钥。

 

对象

nodes (common)

组成集群的节点地址。

 

字符串

resultHeader (common)

wil 执行结果的标头。

 

字符串

transport (common)

设置 Atomix 传输。

io.atomix.catalyst.transport.netty.NettyTransport

传输

ttl (common)

资源 ttl。

 

long

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

defaultResourceConfig (advanced)

集群范围内的默认资源配置。

 

Properties

defaultResourceOptions (advanced)

本地默认资源选项。

 

Properties

ephemeral (advanced)

如果本地成员应该将组作为 PersistentMember 加入到组中,则设置。如果设置为临时,本地成员将接收自动生成的 ID,则忽略本地 ID。

false

布尔值

readConsistency (advanced)

读取一致性级别。

 

ReadConsistency

resourceConfigs (advanced)

集群范围内的资源配置。

 

map

resourceOptions (advanced)

本地资源配置

 

map

同步 (高级)

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

false

布尔值

13.3. Spring Boot Auto-Configuration

组件支持 9 个选项,如下所示。

Expand
名称描述默认类型

camel.component.atomix-map.atomix

共享 AtomixClient 实例。选项是一个 io.atomix.AtomixClient 类型。

 

字符串

camel.component.atomix-map.configuration-uri

AtomixClient 配置的路径

 

字符串

camel.component.atomix-map.configuration.default-action

默认操作。

 

AtomixMap$Action

camel.component.atomix-map.configuration.key

如果标头中没有设置任何设置或者监听特定密钥的事件,要使用的密钥。

 

对象

camel.component.atomix-map.configuration.result-header

wil 执行结果的标头。

 

字符串

camel.component.atomix-map.configuration.ttl

资源 ttl。

 

Long

camel.component.atomix-map.enabled

是否启用 atomix-map 组件的自动配置。默认启用。

 

布尔值

camel.component.atomix-map.nodes

AtomixClient 的节点应连接到

 

list

camel.component.atomix-map.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

13.4. Headers

Expand
名称类型描述

CamelAtomixResourceAction

AtomixMap.Action

  • PUT
  • PUT_IF_ABSENT
  • GET
  • 清除
  • SIZE
  • CONTAINS_KEY
  • CONTAINS_VALUE
  • IS_EMPTY
  • ENTRY_SET
  • 删除
  • 替换

要执行的操作

CamelAtomixResourceKey

对象

-

要操作的密钥

CamelAtomixResourceValue

对象

-

如果使用了 In Body,则该值

CamelAtomixResourceOldValue

对象

-

旧值

CamelAtomixResourceTTL

字符串/长

-

条目 TTL

CamelAtomixResourceReadConsistency

ReadConsistency

  • ATOMIC
  • ATOMIC_LEASE
  • 顺序
  • LOCAL

读取一致性级别

13.5. 配置组件以连接到 Atomix 集群

要加入的 Atomix 集群的节点可以是 Endpoint 或组件级别(推荐),如下一些示例:

  • endpoint:

    <beans xmlns="...">
        <camelContext xmlns="http://camel.apache.org/schema/spring">
            <from uri="direct:start"/>
                <to uri="atomix-map:myMap?nodes=node-1.atomix.cluster:8700,node-2.atomix.cluster:8700"/>
            </route>
        </camelContext>
    </beans>
    Copy to Clipboard Toggle word wrap
  • 组件:

    <beans xmlns="...">
        <bean id="atomix-map" class="org.apache.camel.component.atomix.client.map.AtomixMapComponent">
            <property name="nodes" value="nodes=node-1.atomix.cluster:8700,node-2.atomix.cluster:8700"/>
        </bean>
    
        <camelContext xmlns="http://camel.apache.org/schema/spring">
            <from uri="direct:start"/>
                <to uri="atomix-map:myMap"/>
            </route>
        </camelContext>
    </beans>
    Copy to Clipboard Toggle word wrap

13.6. 使用示例:

  • PUT 是一个带有 1 秒的 TTL 的元素:

    FluentProducerTemplate.on(context)
        .withHeader(AtomixClientConstants.RESOURCE_ACTION, AtomixMap.Action.PUT)
        .withHeader(AtomixClientConstants.RESOURCE_KEY, key)
        .withHeader(AtomixClientConstants.RESOURCE_TTL, "1s")
        .withBody(val)
        .to("direct:start")
        .send();
    Copy to Clipboard Toggle word wrap

第 14 章 Atomix Messaging 组件

可作为 Camel 版本 2.20 可用

通过 camel atomix-messaging 组件,您可以使用 Atomix 的组 消息传递

Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:

    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-atomix</artifactId>
        <version>${camel-version}</version>
    </dependency>
Copy to Clipboard Toggle word wrap

14.1. URI 格式

    atomix-messaging:group
Copy to Clipboard Toggle word wrap

Atomix Messaging 组件支持 5 个选项,它们如下所列。

Expand
名称描述默认类型

configuration (common)

共享组件配置

 

AtomixMessaging 配置

atomix (common)

共享 AtomixClient 实例

 

AtomixClient

nodes (common)

AtomixClient 的节点应连接到

 

list

configurationUri (common)

AtomixClient 配置的路径

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

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

atomix-messaging:resourceName
Copy to Clipboard Toggle word wrap

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

14.1.1. 路径名(1 参数):

Expand
名称描述默认类型

resourceName

所需的 分布式资源名称

 

字符串

14.1.2. 查询参数(19 参数):

Expand
名称描述默认类型

atomix (common)

要使用的 Atomix 实例

 

Atomix

broadcastType (common)

广播类型。

ALL

BroadcastType

channelName (common)

消息传递频道名称

 

字符串

configurationUri (common)

Atomix 配置 uri.

 

字符串

defaultAction (common)

默认操作。

直接

操作

memberName (common)

Atomix 组成员名称

 

字符串

nodes (common)

组成集群的节点地址。

 

字符串

resultHeader (common)

wil 执行结果的标头。

 

字符串

transport (common)

设置 Atomix 传输。

io.atomix.catalyst.transport.netty.NettyTransport

传输

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

defaultResourceConfig (advanced)

集群范围内的默认资源配置。

 

Properties

defaultResourceOptions (advanced)

本地默认资源选项。

 

Properties

ephemeral (advanced)

如果本地成员应该将组作为 PersistentMember 加入到组中,则设置。如果设置为临时,本地成员将接收自动生成的 ID,则忽略本地 ID。

false

布尔值

readConsistency (advanced)

读取一致性级别。

 

ReadConsistency

resourceConfigs (advanced)

集群范围内的资源配置。

 

map

resourceOptions (advanced)

本地资源配置

 

map

同步 (高级)

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

false

布尔值

14.2. Spring Boot Auto-Configuration

组件支持 10 个选项,如下所示。

Expand
名称描述默认类型

camel.component.atomix-messaging.atomix

共享 AtomixClient 实例。选项是一个 io.atomix.AtomixClient 类型。

 

字符串

camel.component.atomix-messaging.configuration-uri

AtomixClient 配置的路径

 

字符串

camel.component.atomix-messaging.configuration.broadcast-type

广播类型。

 

AtomixMessaging$ BroadcastType

camel.component.atomix-messaging.configuration.channel-name

消息传递频道名称

 

字符串

camel.component.atomix-messaging.configuration.default-action

默认操作。

 

AtomixMessaging$Action

camel.component.atomix-messaging.configuration.member-name

Atomix 组成员名称

 

字符串

camel.component.atomix-messaging.configuration.result-header

wil 执行结果的标头。

 

字符串

camel.component.atomix-messaging.enabled

是否启用 atomix-messaging 组件的自动配置。默认启用。

 

布尔值

camel.component.atomix-messaging.nodes

AtomixClient 的节点应连接到

 

list

camel.component.atomix-messaging.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

第 15 章 Atomix MultiMap 组件

可作为 Camel 版本 2.20 可用

camel atomix-multimap 组件允许您使用 Atomix 的 分布式 MultiMap 集合。

Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:

    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-atomix</artifactId>
        <version>${camel-version}</version>
    </dependency>
Copy to Clipboard Toggle word wrap

15.1. URI 格式

    atomix-multimap:multiMapName
Copy to Clipboard Toggle word wrap

Atomix MultiMap 组件支持 5 选项,它们如下。

Expand
名称描述默认类型

配置 (消费者)

共享组件配置

 

AtomixMultiMap 配置

atomix (consumer)

共享 AtomixClient 实例

 

AtomixClient

nodes (consumer)

AtomixClient 的节点应连接到

 

list

configurationUri (consumer)

AtomixClient 配置的路径

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

Atomix MultiMap 端点使用 URI 语法配置:

atomix-multimap:resourceName
Copy to Clipboard Toggle word wrap

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

15.1.1. 路径名(1 参数):

Expand
名称描述默认类型

resourceName

所需的 分布式资源名称

 

字符串

15.1.2. 查询参数(18 参数):

Expand
名称描述默认类型

atomix (consumer)

要使用的 Atomix 实例

 

Atomix

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

configurationUri (consumer)

Atomix 配置 uri.

 

字符串

defaultAction (consumer)

默认操作。

PUT

操作

密钥 (消费者)

如果标头中没有设置任何设置或者监听特定密钥的事件,要使用的密钥。

 

对象

nodes (consumer)

组成集群的节点地址。

 

字符串

resultHeader (consumer)

wil 执行结果的标头。

 

字符串

transport (consumer)

设置 Atomix 传输。

io.atomix.catalyst.transport.netty.NettyTransport

传输

ttl (consumer)

资源 ttl。

 

long

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

defaultResourceConfig (advanced)

集群范围内的默认资源配置。

 

Properties

defaultResourceOptions (advanced)

本地默认资源选项。

 

Properties

ephemeral (advanced)

如果本地成员应该将组作为 PersistentMember 加入到组中,则设置。如果设置为临时,本地成员将接收自动生成的 ID,则忽略本地 ID。

false

布尔值

readConsistency (advanced)

读取一致性级别。

 

ReadConsistency

resourceConfigs (advanced)

集群范围内的资源配置。

 

map

resourceOptions (advanced)

本地资源配置

 

map

同步 (高级)

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

false

布尔值

15.2. Spring Boot Auto-Configuration

组件支持 9 个选项,如下所示。

Expand
名称描述默认类型

camel.component.atomix-multimap.atomix

共享 AtomixClient 实例。选项是一个 io.atomix.AtomixClient 类型。

 

字符串

camel.component.atomix-multimap.configuration-uri

AtomixClient 配置的路径

 

字符串

camel.component.atomix-multimap.configuration.default-action

默认操作。

 

AtomixMultiMap$Action

camel.component.atomix-multimap.configuration.key

如果标头中没有设置任何设置或者监听特定密钥的事件,要使用的密钥。

 

对象

camel.component.atomix-multimap.configuration.result-header

wil 执行结果的标头。

 

字符串

camel.component.atomix-multimap.configuration.ttl

资源 ttl。

 

Long

camel.component.atomix-multimap.enabled

是否启用 atomix-multimap 组件的自动配置。默认启用。

 

布尔值

camel.component.atomix-multimap.nodes

AtomixClient 的节点应连接到

 

list

camel.component.atomix-multimap.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

第 16 章 Atomix 队列组件

可作为 Camel 版本 2.20 可用

camel atomix-queue 组件允许您使用 Atomix 的 分布式队列 集合。

Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:

    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-atomix</artifactId>
        <version>${camel-version}</version>
    </dependency>
Copy to Clipboard Toggle word wrap

16.1. URI 格式

    atomix-queue:queueName
Copy to Clipboard Toggle word wrap

Atomix Queue 组件支持 5 个选项,它们列在下方。

Expand
名称描述默认类型

configuration (common)

共享组件配置

 

AtomixQueue Configuration

atomix (common)

共享 AtomixClient 实例

 

AtomixClient

nodes (common)

AtomixClient 的节点应连接到

 

list

configurationUri (common)

AtomixClient 配置的路径

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

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

atomix-queue:resourceName
Copy to Clipboard Toggle word wrap

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

16.1.1. 路径名(1 参数):

Expand
名称描述默认类型

resourceName

所需的 分布式资源名称

 

字符串

16.1.2. 查询参数(16 参数):

Expand
名称描述默认类型

atomix (common)

要使用的 Atomix 实例

 

Atomix

configurationUri (common)

Atomix 配置 uri.

 

字符串

defaultAction (common)

默认操作。

添加

操作

nodes (common)

组成集群的节点地址。

 

字符串

resultHeader (common)

wil 执行结果的标头。

 

字符串

transport (common)

设置 Atomix 传输。

io.atomix.catalyst.transport.netty.NettyTransport

传输

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

defaultResourceConfig (advanced)

集群范围内的默认资源配置。

 

Properties

defaultResourceOptions (advanced)

本地默认资源选项。

 

Properties

ephemeral (advanced)

如果本地成员应该将组作为 PersistentMember 加入到组中,则设置。如果设置为临时,本地成员将接收自动生成的 ID,则忽略本地 ID。

false

布尔值

readConsistency (advanced)

读取一致性级别。

 

ReadConsistency

resourceConfigs (advanced)

集群范围内的资源配置。

 

map

resourceOptions (advanced)

本地资源配置

 

map

同步 (高级)

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

false

布尔值

16.2. Spring Boot Auto-Configuration

组件支持 7 个选项,如下所示。

Expand
名称描述默认类型

camel.component.atomix-queue.atomix

共享 AtomixClient 实例。选项是一个 io.atomix.AtomixClient 类型。

 

字符串

camel.component.atomix-queue.configuration-uri

AtomixClient 配置的路径

 

字符串

camel.component.atomix-queue.configuration.default-action

默认操作。

 

AtomixQueue$Action

camel.component.atomix-queue.configuration.result-header

wil 执行结果的标头。

 

字符串

camel.component.atomix-queue.enabled

是否启用 atomix-queue 组件的自动配置。默认启用。

 

布尔值

camel.component.atomix-queue.nodes

AtomixClient 的节点应连接到

 

list

camel.component.atomix-queue.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

第 17 章 Atomix Set Component

可作为 Camel 版本 2.20 可用

camel atomix-set 组件允许您使用 Atomix 的 分布式集合

Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:

    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-atomix</artifactId>
        <version>${camel-version}</version>
    </dependency>
Copy to Clipboard Toggle word wrap

17.1. URI 格式

    atomix-set:setName
Copy to Clipboard Toggle word wrap

Atomix Set 组件支持 5 个选项,它们如下。

Expand
名称描述默认类型

configuration (common)

共享组件配置

 

AtomixSetConfiguration

atomix (common)

共享 AtomixClient 实例

 

AtomixClient

nodes (common)

AtomixClient 的节点应连接到

 

list

configurationUri (common)

AtomixClient 配置的路径

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

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

atomix-set:resourceName
Copy to Clipboard Toggle word wrap

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

17.1.1. 路径名(1 参数):

Expand
名称描述默认类型

resourceName

所需的 分布式资源名称

 

字符串

17.1.2. 查询参数(17 参数):

Expand
名称描述默认类型

atomix (common)

要使用的 Atomix 实例

 

Atomix

configurationUri (common)

Atomix 配置 uri.

 

字符串

defaultAction (common)

默认操作。

添加

操作

nodes (common)

组成集群的节点地址。

 

字符串

resultHeader (common)

wil 执行结果的标头。

 

字符串

transport (common)

设置 Atomix 传输。

io.atomix.catalyst.transport.netty.NettyTransport

传输

ttl (common)

资源 ttl。

 

long

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

defaultResourceConfig (advanced)

集群范围内的默认资源配置。

 

Properties

defaultResourceOptions (advanced)

本地默认资源选项。

 

Properties

ephemeral (advanced)

如果本地成员应该将组作为 PersistentMember 加入到组中,则设置。如果设置为临时,本地成员将接收自动生成的 ID,则忽略本地 ID。

false

布尔值

readConsistency (advanced)

读取一致性级别。

 

ReadConsistency

resourceConfigs (advanced)

集群范围内的资源配置。

 

map

resourceOptions (advanced)

本地资源配置

 

map

同步 (高级)

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

false

布尔值

17.2. Spring Boot Auto-Configuration

组件支持 8 个选项,如下所示。

Expand
名称描述默认类型

camel.component.atomix-set.atomix

共享 AtomixClient 实例。选项是一个 io.atomix.AtomixClient 类型。

 

字符串

camel.component.atomix-set.configuration-uri

AtomixClient 配置的路径

 

字符串

camel.component.atomix-set.configuration.default-action

默认操作。

 

AtomixSet$Action

camel.component.atomix-set.configuration.result-header

wil 执行结果的标头。

 

字符串

camel.component.atomix-set.configuration.ttl

资源 ttl。

 

Long

camel.component.atomix-set.enabled

是否启用 atomix-set 组件的自动配置。默认启用。

 

布尔值

camel.component.atomix-set.nodes

AtomixClient 的节点应连接到

 

list

camel.component.atomix-set.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

第 18 章 Atomix Value 组件

可作为 Camel 版本 2.20 可用

camel atomix-value 组件允许您使用 Atomix 的 分布式值

Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:

    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-atomix</artifactId>
        <version>${camel-version}</version>
    </dependency>
Copy to Clipboard Toggle word wrap

18.1. URI 格式

    atomix-value:valueName
Copy to Clipboard Toggle word wrap

Atomix Value 组件支持 5 个选项,它们如下所列。

Expand
名称描述默认类型

configuration (common)

共享组件配置

 

AtomixValue Configuration

atomix (common)

共享 AtomixClient 实例

 

AtomixClient

nodes (common)

AtomixClient 的节点应连接到

 

list

configurationUri (common)

AtomixClient 配置的路径

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

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

atomix-value:resourceName
Copy to Clipboard Toggle word wrap

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

18.1.1. 路径名(1 参数):

Expand
名称描述默认类型

resourceName

所需的 分布式资源名称

 

字符串

18.1.2. 查询参数(17 参数):

Expand
名称描述默认类型

atomix (common)

要使用的 Atomix 实例

 

Atomix

configurationUri (common)

Atomix 配置 uri.

 

字符串

defaultAction (common)

默认操作。

SET

操作

nodes (common)

组成集群的节点地址。

 

字符串

resultHeader (common)

wil 执行结果的标头。

 

字符串

transport (common)

设置 Atomix 传输。

io.atomix.catalyst.transport.netty.NettyTransport

传输

ttl (common)

资源 ttl。

 

long

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

defaultResourceConfig (advanced)

集群范围内的默认资源配置。

 

Properties

defaultResourceOptions (advanced)

本地默认资源选项。

 

Properties

ephemeral (advanced)

如果本地成员应该将组作为 PersistentMember 加入到组中,则设置。如果设置为临时,本地成员将接收自动生成的 ID,则忽略本地 ID。

false

布尔值

readConsistency (advanced)

读取一致性级别。

 

ReadConsistency

resourceConfigs (advanced)

集群范围内的资源配置。

 

map

resourceOptions (advanced)

本地资源配置

 

map

同步 (高级)

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

false

布尔值

18.2. Spring Boot Auto-Configuration

组件支持 8 个选项,如下所示。

Expand
名称描述默认类型

camel.component.atomix-value.atomix

共享 AtomixClient 实例。选项是一个 io.atomix.AtomixClient 类型。

 

字符串

camel.component.atomix-value.configuration-uri

AtomixClient 配置的路径

 

字符串

camel.component.atomix-value.configuration.default-action

默认操作。

 

AtomixValue$Action

camel.component.atomix-value.configuration.result-header

wil 执行结果的标头。

 

字符串

camel.component.atomix-value.configuration.ttl

资源 ttl。

 

Long

camel.component.atomix-value.enabled

是否启用 atomix-value 组件的自动配置。默认启用。

 

布尔值

camel.component.atomix-value.nodes

AtomixClient 的节点应连接到

 

list

camel.component.atomix-value.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

第 19 章 Avro Component

作为 Camel 2.10 版本提供

此组件为 avro 提供数据格式,允许使用 Apache Avro 的二进制数据格式对消息的序列化和反序列化化。此外,它还通过提供生产者和消费者端点(通过 netty 或 http),为 Apache Avro 的 rpc 提供支持。

Maven 用户需要将以下依赖项添加到其 pom.xml 中:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-avro</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

19.1. Apache Avro 概述

Avro 允许您使用 json 等格式定义消息类型和协议,然后为指定类型和消息生成 java 代码。下面是一个 schema 的示例。

{"namespace": "org.apache.camel.avro.generated",
 "protocol": "KeyValueProtocol",

 "types": [
     {"name": "Key", "type": "record",
      "fields": [
          {"name": "key",   "type": "string"}
      ]
     },
     {"name": "Value", "type": "record",
      "fields": [
          {"name": "value",   "type": "string"}
      ]
     }
 ],

 "messages": {
     "put": {
         "request": [{"name": "key", "type": "Key"}, {"name": "value", "type": "Value"} ],
         "response": "null"
     },
     "get": {
         "request": [{"name": "key", "type": "Key"}],
         "response": "Value"
     }
 }
}
Copy to Clipboard Toggle word wrap

您可以使用 maven 和 ant 等模式轻松生成类。如需更多详细信息,请参阅 Apache Avro 文档

但是,它不强制采用一种模式,而且您可以为现有类创建 schema。自 2.12 开始,您可以使用现有协议接口发出 RCP 调用。您应该为协议本身使用接口,POJO Bean 或原语/字符串类用于参数和结果类型。下面是与上述 schema 对应的类示例:

package org.apache.camel.avro.reflection;

public interface KeyValueProtocol {
    void put(String key, Value value);
    Value get(String key);
}

class Value {
    private String value;
    public String getValue() { return value; }
    public void setValue(String value) { this.value = value; }
}
Copy to Clipboard Toggle word wrap

注:现有类只能用于 RPC (请参阅以下),而不是数据格式。

19.2. 使用 Avro 数据格式

使用 avro 数据格式非常简单,就像指定您希望在路由中总结或 unmarshal 的类一样容易。

    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
        <route>
            <from uri="direct:in"/>
            <marshal>
                <avro instanceClass="org.apache.camel.dataformat.avro.Message"/>
            </marshal>
            <to uri="log:out"/>
        </route>
    </camelContext>
Copy to Clipboard Toggle word wrap

另一种方法是指定上下文内的数据格式,并从您的路由引用它。

    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
         <dataFormats>
            <avro id="avro" instanceClass="org.apache.camel.dataformat.avro.Message"/>
        </dataFormats>
        <route>
            <from uri="direct:in"/>
            <marshal ref="avro"/>
            <to uri="log:out"/>
        </route>
    </camelContext>
Copy to Clipboard Toggle word wrap

同样,您可以使用 avro 数据格式进行 umarshal。

19.3. 在 Camel 中使用 Avro RPC

如 Avro 上方所述,它还通过多种传输提供 RPC 支持,如 http 和 netty。Camel 为这两种传输提供使用者和制作者。

avro:[transport]:[host]:[port][?options]
Copy to Clipboard Toggle word wrap

支持的传输值当前为 http 或 netty。

由于 2.12,您可以在 URI 右侧指定消息名称:

avro:[transport]:[host]:[port][/messageName][?options]
Copy to Clipboard Toggle word wrap

对于消费者,您可以有多个连接到同一套接字的路由。给正确的路由分配由 avro 组件自动进行。未指定 messageName 的路由(若有)将用作默认值。

当为 avro ipc 使用 camel producers 时,"in"消息正文需要包含 avro 协议中指定的操作参数。该响应将在"out"消息的正文中添加。

在为 avro ipc 使用 camel avro 消费者时,请求参数将放置在所创建交换的"内"消息正文并且处理"out"消息的正文后,将作为响应发送。

注: 默认情况下,使用者参数被嵌套到阵列中。如果您只有一个参数,因为 2.12 您可以使用 singleParameter URI 选项在 "in" 消息正文中接收它,而无需数组嵌套。

19.4. Avro RPC URI 选项

Avro 组件支持 2 个选项,它们如下所列。

Expand
名称描述默认类型

配置 (高级)

使用共享的 AvroConfiguration 一次配置选项

 

AvroConfiguration

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

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

avro:transport:host:port/messageName
Copy to Clipboard Toggle word wrap

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

19.4.1. 路径名(4 参数):

Expand
名称描述默认类型

传输

要使用 所需的 传输,可以是 http 或 netty

 

AvroTransport

port

要使用 所需的 端口号

 

int

主机

要使用 所需的 主机名

 

字符串

messageName

要发送的消息的名称。

 

字符串

19.4.2. 查询参数(10 参数):

Expand
名称描述默认类型

protocol (common)

要使用的 Avro 协议

 

协议

protocolClassName (common)

Avro 协议使用 FQN 类名称定义

 

字符串

protocolLocation (common)

Avro 协议位置

 

字符串

reflectionProtocol (common)

如果提供的协议对象被反映为协议。应该只与 protocol 参数一起使用,因为用于 protocolClassName 协议类型将被自动检测

false

布尔值

singleParameter (common)

如果为 true,则消费者参数将不会嵌套到阵列中。如果协议为消息指定了更多,则 1 参数将失败

false

布尔值

uriAuthority (common)

使用授权(用户名和密码)

 

字符串

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

同步 (高级)

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

false

布尔值

19.5. Spring Boot Auto-Configuration

组件支持 15 个选项,它们如下所列。

Expand
名称描述默认类型

camel.component.avro.configuration.host

要使用的主机名

 

字符串

camel.component.avro.configuration.message-name

要发送的消息的名称。

 

字符串

camel.component.avro.configuration.port

要使用的端口号

 

整数

camel.component.avro.configuration.protocol

要使用的 Avro 协议

 

协议

camel.component.avro.configuration.protocol-class-name

Avro 协议使用 FQN 类名称定义

 

字符串

camel.component.avro.configuration.protocol-location

Avro 协议位置

 

字符串

camel.component.avro.configuration.reflection-protocol

如果提供的协议对象被反映为协议。应该只与 protocol 参数一起使用,因为用于 protocolClassName 协议类型将被自动检测

false

布尔值

camel.component.avro.configuration.single-parameter

如果为 true,则消费者参数将不会嵌套到阵列中。如果协议为消息指定了更多,则 1 参数将失败

false

布尔值

camel.component.avro.configuration.transport

要使用的传输,可以是 http 或 netty

 

AvroTransport

camel.component.avro.configuration.uri-authority

使用授权(用户名和密码)

 

字符串

camel.component.avro.enabled

启用 avro 组件

true

布尔值

camel.component.avro.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.dataformat.avro.content-type-header

如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。

false

布尔值

camel.dataformat.avro.enabled

启用 avro dataformat

true

布尔值

camel.dataformat.avro.instance-class-name

用于 marshal 和 unmarshalling 的类名称

 

字符串

19.6. Avro RPC 标头

Expand
名称描述

CamelAvroMessageName

要发送的消息的名称。在消费者中,从 URI 覆盖消息名称(若有)

19.7. 例子

通过 http 的 camel avro producer 示例:

        <route>
            <from uri="direct:start"/>
            <to uri="avro:http:localhost:{{avroport}}?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol"/>
            <to uri="log:avro"/>
        </route>
Copy to Clipboard Toggle word wrap

在上面的示例中,您需要填写 CamelAvroMessageName 标头。从 2.12 开始,您可以使用以下语法来调用恒定信息:

        <route>
            <from uri="direct:start"/>
            <to uri="avro:http:localhost:{{avroport}}/put?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol"/>
            <to uri="log:avro"/>
        </route>
Copy to Clipboard Toggle word wrap

使用 camel avro 用户通过 netty 消耗消息的示例:

        <route>
            <from uri="avro:netty:localhost:{{avroport}}?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol"/>
            <choice>
                <when>
                    <el>${in.headers.CamelAvroMessageName == 'put'}</el>
                    <process ref="putProcessor"/>
                </when>
                <when>
                    <el>${in.headers.CamelAvroMessageName == 'get'}</el>
                    <process ref="getProcessor"/>
                </when>
            </choice>
        </route>
Copy to Clipboard Toggle word wrap

由于 2.12,您可以设置两个不同的路由来执行相同的任务:

        <route>
            <from uri="avro:netty:localhost:{{avroport}}/put?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol">
            <process ref="putProcessor"/>
        </route>
        <route>
            <from uri="avro:netty:localhost:{{avroport}}/get?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol&singleParameter=true"/>
            <process ref="getProcessor"/>
        </route>
Copy to Clipboard Toggle word wrap

在上面的例子中,get 只使用一个参数,因此使用 singleParameter,而 getProcessor 将直接接收正文中的 Value 类,而 putProcessor 将收到大小 2,其值为 String key 和 value 值,并以数组内容填充。

第 20 章 Avro DataFormat

作为 Camel 版本 2.14 可用

此组件为 avro 提供数据格式,允许使用 Apache Avro 的二进制数据格式对消息的序列化和反序列化化。此外,它还通过提供生产者和消费者端点(通过 netty 或 http),为 Apache Avro 的 rpc 提供支持。

Maven 用户需要将以下依赖项添加到其 pom.xml 中:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-avro</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

20.1. Apache Avro 概述

Avro 允许您使用 json 等格式定义消息类型和协议,然后为指定类型和消息生成 java 代码。下面是一个 schema 的示例。

{"namespace": "org.apache.camel.avro.generated",
 "protocol": "KeyValueProtocol",

 "types": [
     {"name": "Key", "type": "record",
      "fields": [
          {"name": "key",   "type": "string"}
      ]
     },
     {"name": "Value", "type": "record",
      "fields": [
          {"name": "value",   "type": "string"}
      ]
     }
 ],

 "messages": {
     "put": {
         "request": [{"name": "key", "type": "Key"}, {"name": "value", "type": "Value"} ],
         "response": "null"
     },
     "get": {
         "request": [{"name": "key", "type": "Key"}],
         "response": "Value"
     }
 }
}
Copy to Clipboard Toggle word wrap

您可以使用 maven 和 ant 等模式轻松生成类。如需更多详细信息,请参阅 Apache Avro 文档

但是,它不强制采用一种模式,而且您可以为现有类创建 schema。自 2.12 开始,您可以使用现有协议接口发出 RCP 调用。您应该为协议本身使用接口,POJO Bean 或原语/字符串类用于参数和结果类型。下面是与上述 schema 对应的类示例:

package org.apache.camel.avro.reflection;

public interface KeyValueProtocol {
    void put(String key, Value value);
    Value get(String key);
}

class Value {
    private String value;
    public String getValue() { return value; }
    public void setValue(String value) { this.value = value; }
}
Copy to Clipboard Toggle word wrap

注:现有类只能用于 RPC (请参阅以下),而不是数据格式。

20.2. 使用 Avro 数据格式

使用 avro 数据格式非常简单,就像指定您希望在路由中总结或 unmarshal 的类一样容易。

    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
        <route>
            <from uri="direct:in"/>
            <marshal>
                <avro instanceClass="org.apache.camel.dataformat.avro.Message"/>
            </marshal>
            <to uri="log:out"/>
        </route>
    </camelContext>
Copy to Clipboard Toggle word wrap

另一种方法是指定上下文内的数据格式,并从您的路由引用它。

    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
         <dataFormats>
            <avro id="avro" instanceClass="org.apache.camel.dataformat.avro.Message"/>
        </dataFormats>
        <route>
            <from uri="direct:in"/>
            <marshal ref="avro"/>
            <to uri="log:out"/>
        </route>
    </camelContext>
Copy to Clipboard Toggle word wrap

同样,您可以使用 avro 数据格式进行 umarshal。

20.3. Avro Dataformat 选项

Avro 数据格式支持 2 个选项,它们如下。

Expand
名称默认Java 类型描述

instanceClassName

 

字符串

用于 marshal 和 unmarshalling 的类名称

contentTypeHeader

false

布尔值

如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。

20.4. Spring Boot Auto-Configuration

组件支持 15 个选项,它们如下所列。

Expand
名称描述默认类型

camel.component.avro.configuration.host

要使用的主机名

 

字符串

camel.component.avro.configuration.message-name

要发送的消息的名称。

 

字符串

camel.component.avro.configuration.port

要使用的端口号

 

整数

camel.component.avro.configuration.protocol

要使用的 Avro 协议

 

协议

camel.component.avro.configuration.protocol-class-name

Avro 协议使用 FQN 类名称定义

 

字符串

camel.component.avro.configuration.protocol-location

Avro 协议位置

 

字符串

camel.component.avro.configuration.reflection-protocol

如果提供的协议对象被反映为协议。应该只与 protocol 参数一起使用,因为用于 protocolClassName 协议类型将被自动检测

false

布尔值

camel.component.avro.configuration.single-parameter

如果为 true,则消费者参数将不会嵌套到阵列中。如果协议为消息指定了更多,则 1 参数将失败

false

布尔值

camel.component.avro.configuration.transport

要使用的传输,可以是 http 或 netty

 

AvroTransport

camel.component.avro.configuration.uri-authority

使用授权(用户名和密码)

 

字符串

camel.component.avro.enabled

启用 avro 组件

true

布尔值

camel.component.avro.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.dataformat.avro.content-type-header

如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。

false

布尔值

camel.dataformat.avro.enabled

启用 avro dataformat

true

布尔值

camel.dataformat.avro.instance-class-name

用于 marshal 和 unmarshalling 的类名称

 

字符串

ND

第 21 章 AWS CloudWatch 组件

作为 Camel 2.11 版本提供

CW 组件允许将消息发送到 Amazon CloudWatch 指标。Amazon API 的实现由 AWS SDK 提供。

前提条件

您必须有有效的 Amazon Web Services 开发人员帐户,并被签名才能使用 Amazon CloudWatch。如需更多信息,请参阅 Amazon CloudWatch

21.1. URI 格式

aws-cw://namespace[?options]
Copy to Clipboard Toggle word wrap

如果指标不存在,则会创建指标。
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…​

21.2. URI 选项

AWS CloudWatch 组件支持 5 个选项,它们如下。

Expand
名称描述默认类型

配置 (高级)

AWS CW 默认配置

 

CwConfiguration

accessKey (producer)

Amazon AWS 访问密钥

 

字符串

secretKey (producer)

Amazon AWS Secret Key

 

字符串

region (producer)

CW 客户端需要工作的区域

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

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

aws-cw:namespace
Copy to Clipboard Toggle word wrap

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

21.2.1. 路径名(1 参数):

Expand
名称描述默认类型

namespace

所需的 指标命名空间

 

字符串

21.2.2. 查询参数(11 参数):

Expand
名称描述默认类型

amazonCwClient (producer)

使用 AmazonCloudWatch 作为客户端

 

AmazonCloudWatch

name (producer)

指标名称

 

字符串

proxyHost (producer)

在实例化 CW 客户端时定义代理主机

 

字符串

proxyPort (producer)

在实例化 CW 客户端时定义代理端口

 

整数

region (producer)

CW 客户端需要工作的区域

 

字符串

timestamp (producer)

指标时间戳

 

Date

unit (producer)

指标单元

 

字符串

value (producer)

指标值

 

同步 (高级)

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

false

布尔值

accesskey (安全性)

Amazon AWS 访问密钥

 

字符串

secretKey (security)

Amazon AWS Secret Key

 

字符串

21.3. Spring Boot Auto-Configuration

组件支持 16 个选项,如下所示。

Expand
名称描述默认类型

camel.component.aws-cw.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-cw.configuration.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-cw.configuration.amazon-cw-client

使用 AmazonCloudWatch 作为客户端

 

AmazonCloudWatch

camel.component.aws-cw.configuration.name

指标名称

 

字符串

camel.component.aws-cw.configuration.namespace

指标命名空间

 

字符串

camel.component.aws-cw.configuration.proxy-host

在实例化 CW 客户端时定义代理主机

 

字符串

camel.component.aws-cw.configuration.proxy-port

在实例化 CW 客户端时定义代理端口

 

整数

camel.component.aws-cw.configuration.region

CW 客户端需要工作的区域

 

字符串

camel.component.aws-cw.configuration.secret-key

Amazon AWS Secret Key

 

字符串

camel.component.aws-cw.configuration.timestamp

指标时间戳

 

Date

camel.component.aws-cw.configuration.unit

指标单元

 

字符串

camel.component.aws-cw.configuration.value

指标值

 

camel.component.aws-cw.enabled

启用 aws-cw 组件

true

布尔值

camel.component.aws-cw.region

CW 客户端需要工作的区域

 

字符串

camel.component.aws-cw.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.aws-cw.secret-key

Amazon AWS Secret Key

 

字符串

所需的 CW 组件选项

您必须提供 Registry 中的 amazonCwClient 或您的 accessKey 和 secretKey 以访问 Amazon 的 CloudWatch

21.4. 使用

21.4.1. CW producer 评估的消息标头

Expand
标头类型描述

CamelAwsCwMetricName

字符串

Amazon CW 指标名称。

CamelAwsCwMetricValue

Amazon CW 指标值。

CamelAwsCwMetricUnit

字符串

Amazon CW 指标单元。

CamelAwsCwMetricNamespace

字符串

Amazon CW 指标命名空间。

CamelAwsCwMetricTimestamp

Date

Amazon CW 指标时间戳。

CamelAwsCwMetricDimensionName

字符串

Camel 2.12: Amazon CW 指标度名称。

CamelAwsCwMetricDimensionValue

字符串

Camel 2.12: Amazon CW 指标度值.

CamelAwsCwMetricDimensions

Map<String, String>

Camel 2.12: 维度名称和度量值的映射。

21.4.2. 高级 AmazonCloudWatch 配置

如果需要更多对 AmazonCloudWatch 实例配置进行控制,您可以创建自己的实例,并从 URI 引用它:

from("direct:start")
.to("aws-cw://namepsace?amazonCwClient=#client");
Copy to Clipboard Toggle word wrap

#client 指的是 registry 中的 AmazonCloudWatch

例如,如果您的 Camel 应用程序是在防火墙后面运行:

AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);

AmazonCloudWatch client = new AmazonCloudWatchClient(awsCredentials, clientConfiguration);

registry.bind("client", client);
Copy to Clipboard Toggle word wrap

21.5. 依赖项

Maven 用户需要将以下依赖项添加到其 pom.xml 中。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.10 或更高版本)。

21.6. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • AWS 组件

第 22 章 AWS DynamoDB Component

作为 Camel 2.10 版本提供

DynamoDB 组件支持存储和检索来自 Amazon 的 DynamoDB 服务的数据。

前提条件

您必须有有效的 Amazon Web Services 开发人员帐户,并被签名才能使用 Amazon DynamoDB。有关更多信息,请参见 Amazon DynamoDB

22.1. URI 格式

aws-ddb://domainName[?options]
Copy to Clipboard Toggle word wrap

您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…​

22.2. URI 选项

AWS DynamoDB 组件支持 5 个选项,它们如下所列。

Expand
名称描述默认类型

配置 (高级)

AWS DDB 默认配置

 

DdbConfiguration

accessKey (producer)

Amazon AWS 访问密钥

 

字符串

secretKey (producer)

Amazon AWS Secret Key

 

字符串

region (producer)

DDB 客户端需要工作的区域

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

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

aws-ddb:tableName
Copy to Clipboard Toggle word wrap

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

22.2.1. 路径名(1 参数):

Expand
名称描述默认类型

tableName

当前用于的表的名称。

 

字符串

22.2.2. 查询参数(13 参数):

Expand
名称描述默认类型

amazonDDBClient (producer)

使用 AmazonDynamoDB 作为客户端

 

AmazonDynamoDB

consistentRead (producer)

决定在读取数据时是否应强制执行强一致性。

false

布尔值

keyAttributeName (producer)

创建表时的属性名称

 

字符串

keyAttributeType (producer)

创建表时的属性类型

 

字符串

operation (producer)

要执行的操作

PutItem

DdbOperations

proxyHost (producer)

在实例化 DDB 客户端时定义代理主机

 

字符串

proxyPort (producer)

在实例化 DDB 客户端时定义代理端口

 

整数

readCapacity (producer)

从表中读取资源所需的置备吞吐量

 

Long

region (producer)

DDB 客户端需要工作的区域

 

字符串

writeCapacity (producer)

为将资源写入您的表的置备吞吐量

 

Long

同步 (高级)

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

false

布尔值

accesskey (安全性)

Amazon AWS 访问密钥

 

字符串

secretKey (security)

Amazon AWS Secret Key

 

字符串

22.3. Spring Boot Auto-Configuration

组件支持 18 个选项,如下所示。

Expand
名称描述默认类型

camel.component.aws-ddb.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-ddb.configuration.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-ddb.configuration.amazon-d-d-b-client

使用 AmazonDynamoDB 作为客户端

 

AmazonDynamoDB

camel.component.aws-ddb.configuration.consistent-read

决定在读取数据时是否应强制执行强一致性。

false

布尔值

camel.component.aws-ddb.configuration.key-attribute-name

创建表时的属性名称

 

字符串

camel.component.aws-ddb.configuration.key-attribute-type

创建表时的属性类型

 

字符串

camel.component.aws-ddb.configuration.operation

要执行的操作

 

DdbOperations

camel.component.aws-ddb.configuration.proxy-host

在实例化 DDB 客户端时定义代理主机

 

字符串

camel.component.aws-ddb.configuration.proxy-port

在实例化 DDB 客户端时定义代理端口

 

整数

camel.component.aws-ddb.configuration.read-capacity

从表中读取资源所需的置备吞吐量

 

Long

camel.component.aws-ddb.configuration.region

DDB 客户端需要工作的区域

 

字符串

camel.component.aws-ddb.configuration.secret-key

Amazon AWS Secret Key

 

字符串

camel.component.aws-ddb.configuration.table-name

当前使用的表的名称。

 

字符串

camel.component.aws-ddb.configuration.write-capacity

为将资源写入您的表的置备吞吐量

 

Long

camel.component.aws-ddb.enabled

启用 aws-ddb 组件

true

布尔值

camel.component.aws-ddb.region

DDB 客户端需要工作的区域

 

字符串

camel.component.aws-ddb.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.aws-ddb.secret-key

Amazon AWS Secret Key

 

字符串

所需的 DDB 组件选项

您必须提供 Registry 中的 amazonDDBClient 或您的 accessKey 和 secretKey 以访问 Amazon 的 DynamoDB

22.4. 使用

22.4.1. DDB producer 评估的邮件标头

Expand
标头类型描述

CamelAwsDdbBatchItems

Map<String, KeysAndAttributes>

由主键获取的表格名称和对应项的映射。

CamelAwsDdbTableName

字符串

此操作的表名称。

CamelAwsDdbKey

唯一标识表中的每个项目的主键。从 Camel 2.16.0 中,此标头的类型为 Map<String, AttributeValue>,而不是 Key

CamelAwsDdbReturnValues

字符串

如果要在修改前或修改(NONE、ALL_OLD、UPDATED_OLD、ALL_NEW、UPD_NEW)前或之后获取属性名称-值对。

CamelAwsDdbUpdateCondition

Map<String, ExpectedAttributeValue>

为条件修改指定属性。

CamelAwsDdbAttributeNames

collection<String>

如果未指定属性名称,则返回所有属性。

CamelAwsDdbConsistentRead

布尔值

如果设置为 true,则发出一致的读取,否则最终使用一致性。

CamelAwsDdbIndexName

字符串

如果设置将用作 Secondary Index for Query 操作。

CamelAwsDdbItem

Map<String, AttributeValue>

项属性的映射,必须包含定义项目的主键值。

CamelAwsDdbExactCount

布尔值

如果设置为 true,Amazon DynamoDB 会返回与查询参数匹配的总项目数,而不是匹配项目及其属性的列表。从 Camel 2.16.0 中,此标题已不存在。

CamelAwsDdbKeyConditions

map<String, Condition>

从 Camel 2.16.0.此标头指定查询的选择条件,并将两个旧的标头 CamelAwsDdbHashKeyValueCamelAwsDdbScanRangeKeyCondition合并

CamelAwsDdbStartKey

要从中继续之前的查询的项目的主键。

CamelAwsDdbHashKeyValue

AttributeValue

复合主键的散列组件的值。从 Camel 2.16.0 中,此标题已不存在。

CamelAwsDdbLimit

整数

要返回的最大项目数。

CamelAwsDdbScanRangeKeyCondition

状况

用于属性值和用于查询的运算符的容器。从 Camel 2.16.0 这个标头不再存在。

CamelAwsDdbScanIndexForward

布尔值

指定索引的正向或后向遍历。

CamelAwsDdbScanFilter

map<String, Condition>

评估扫描结果,仅返回所需的值。

CamelAwsDdbUpdateValues

Map<String, AttributeValueUpdate>

将属性名称映射到更新的新值和操作。

Expand
标头类型描述

CamelAwsDdbBatchResponse

Map<String,BatchResponse>

表名称和表中的对应项目属性。

CamelAwsDdbUnprocessedKeys

Map<String,KeysAndAttributes>

包含与当前响应没有处理的表格及其对应键的映射。

22.4.3. DeleteItem 操作期间设置的消息标头

Expand
标头类型描述

CamelAwsDdbAttributes

Map<String, AttributeValue>

操作返回的属性列表。

22.4.4. DeleteTable 操作期间设置的消息标头

Expand
标头类型描述

CamelAwsDdbProvisionedThroughput

  

ProvisionedThroughputDescription

 

这个表的 Provisioned throughput 属性的值

CamelAwsDdbCreationDate

Date

这个表的创建日期。

CamelAwsDdbTableItemCount

Long

此表的项目列表。

CamelAwsDdbKeySchema

KeySchema

标识此表的主键的 KeySchema。从 Camel 2.16.0,这个标头的类型是 List<KeySchemaElement> 而不是 KeySchema

CamelAwsDdbTableName

字符串

表名称。

CamelAwsDdbTableSize

Long

表大小(以字节为单位)。

CamelAwsDdbTableStatus

字符串

表的状态:CREATING、UPDATING、DELETING, ACTIVE

22.4.5. 在 DescribeTable 操作期间设置消息标头

Expand
标头类型描述

CamelAwsDdbProvisionedThroughput

{{ProvisionedThroughputDescription}}

这个表的 Provisioned throughput 属性的值

CamelAwsDdbCreationDate

Date

这个表的创建日期。

CamelAwsDdbTableItemCount

Long

此表的项目列表。

CamelAwsDdbKeySchema

{{KeySchema}}

标识此表的主键的 KeySchema。从 Camel 2.16.0,这个标头的类型是 List<KeySchemaElement> 而不是 KeySchema

CamelAwsDdbTableName

字符串

表名称。

CamelAwsDdbTableSize

Long

表大小(以字节为单位)。

CamelAwsDdbTableStatus

字符串

表的状态:CREATING、UPDATING、DELETING, ACTIVE

CamelAwsDdbReadCapacity

Long

此表的 ReadCapacityUnits 属性。

CamelAwsDdbWriteCapacity

Long

这个表格的 WriteCapacityUnits 属性。

22.4.6. GetItem 操作期间设置消息标头

Expand
标头类型描述

CamelAwsDdbAttributes

Map<String, AttributeValue>

操作返回的属性列表。

22.4.7. PutItem 操作期间设置的消息标头

Expand
标头类型描述

CamelAwsDdbAttributes

Map<String, AttributeValue>

操作返回的属性列表。

22.4.8. Query 操作期间设置的消息标头

Expand
标头类型描述

CamelAwsDdbItems

List<java.util.Map<String,AttributeValue>>

操作返回的属性列表。

CamelAwsDdbLastEvaluatedKey

查询操作停止的项目的主键,包括上一个结果集。

CamelAwsDdbConsumedCapacity

操作期间所消耗的表调配吞吐量的容量单位数。

CamelAwsDdbCount

整数

响应中的项目数。

22.4.9. 在 Scan 操作期间设置消息标头

Expand
标头类型描述

CamelAwsDdbItems

List<java.util.Map<String,AttributeValue>>

操作返回的属性列表。

CamelAwsDdbLastEvaluatedKey

查询操作停止的项目的主键,包括上一个结果集。

CamelAwsDdbConsumedCapacity

操作期间所消耗的表调配吞吐量的容量单位数。

CamelAwsDdbCount

整数

响应中的项目数。

CamelAwsDdbScannedCount

整数

应用任何过滤器前的完整扫描中的项目数。

22.4.10. UpdateItem 操作期间设置的消息标头

Expand
标头类型描述

CamelAwsDdbAttributes

Map<String, AttributeValue>

操作返回的属性列表。

22.4.11. 高级 AmazonDynamoDB 配置

如果您需要对 AmazonDynamoDB 实例配置进行更多控制,您可以创建自己的实例,并从 URI 中引用它:

from("direct:start")
.to("aws-ddb://domainName?amazonDDBClient=#client");
Copy to Clipboard Toggle word wrap

#client 指的是 registry 中的 AmazonDynamoDB

例如,如果您的 Camel 应用程序是在防火墙后面运行:

AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);

AmazonDynamoDB client = new AmazonDynamoDBClient(awsCredentials, clientConfiguration);

registry.bind("client", client);
Copy to Clipboard Toggle word wrap

22.5. 依赖项

Maven 用户需要将以下依赖项添加到其 pom.xml 中。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.10 或更高版本)。

22.6. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • AWS 组件

第 23 章 AWS DynamoDB Streams Component

作为 Camel 2.17 版提供

DynamoDB Stream 组件支持接收来自 Amazon DynamoDB Stream 服务的消息。

前提条件

您必须有有效的 Amazon Web Services 开发人员帐户,且必须注册才能使用 Amazon DynamoDB Streams。如需更多信息,请参阅 AWS DynamoDB

23.1. URI 格式

aws-ddbstream://table-name[?options]
Copy to Clipboard Toggle word wrap

需要在使用流前创建流。
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…​

23.2. URI 选项

AWS DynamoDB Streams 组件支持 5 选项,它们如下所列。

Expand
名称描述默认类型

配置 (高级)

AWS DDB 流默认配置

 

DdbStreamConfiguration

accessKey (consumer)

Amazon AWS 访问密钥

 

字符串

secretKey (consumer)

Amazon AWS Secret Key

 

字符串

区域 (使用者)

Amazon AWS Region

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

AWS DynamoDB Streams 端点使用 URI 语法配置:

aws-ddbstream:tableName
Copy to Clipboard Toggle word wrap

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

23.2.1. 路径名(1 参数):

Expand
名称描述默认类型

tableName

dynamodb 表的 必填 名称

 

字符串

23.2.2. 查询参数(28 参数):

Expand
名称描述默认类型

amazonDynamoDbStreams Client (consumer)

Amazon DynamoDB 客户端用于此端点的所有请求

 

AmazonDynamoDBStreams

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

iteratorType (consumer)

定义 DynaboDB 流中的什么位置以开始获取记录。请注意,在流发现到实时前,使用 TRIM_HORIZON 可能会导致大量延迟。如果 AT,AFTER_SEQUENCE_NUENCE_NUMBER,则使用 sequenceNumberProvider MUST。

LATEST

ShardIteratorType

maxResultsPerRequest (consumer)

在每个轮询中获取的最大记录数

 

int

proxyHost (consumer)

在实例化 DDBStreams 客户端时定义代理主机

 

字符串

proxyPort (consumer)

在实例化 DDBStreams 客户端时定义代理端口

 

整数

区域 (使用者)

DDBStreams 客户端需要正常工作的区域

 

字符串

sendEmptyMessageWhenIdle (consumer)

如果轮询使用者没有轮询任何文件,您可以启用这个选项来发送空消息(无正文)。

false

布尔值

sequenceNumberProvider (consumer)

当使用两个 ShardIteratorType.AT、AFTER_SEQUENCE_NUMBER iterator 类型时的序列号的供应商。可以是 registry 引用,也可以是字面的序列号。

 

SequenceNumberProvider

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

pollStrategy (consumer)

可插拔 org.apache.camel.PollingConsumerPollingStrategy 允许您提供自定义实施来控制在轮询操作中通常会发生错误处理,然后再在 Camel 中创建并被路由。

 

PollingConsumerPoll Strategy

同步 (高级)

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

false

布尔值

backoffErrorThreshold (scheduler)

后续错误轮询(因某些错误导致的失败)的数量,在 backoffMultipler 应该启动前发生。

 

int

backoffIdleThreshold (scheduler)

后续闲置轮询的数量,在 backoffMultipler 应该启动之前发生。

 

int

backoffMultiplier (scheduler)

如果行中有多个后续闲置/errors,让调度的轮询消费者重新关闭。然后,倍数是下一次实际尝试发生前跳过的轮询数量。当使用这个选项时,还必须配置 backoffIdleThreshold 和/or backoffErrorThreshold。

 

int

延迟 (scheduler)

下次轮询前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。

500

long

greedy (scheduler)

如果启用了 greedy,则 ScheduledPollConsumer 将立即再次运行,如果上一运行轮询了 1 或更多消息。

false

布尔值

initialDelay (scheduler)

第一次轮询启动前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。

1000

long

runLoggingLevel (scheduler)

消费者日志轮询轮询时启动/完成日志行。此选项允许您为其配置日志级别。

TRACE

LoggingLevel

scheduledExecutorService (scheduler)

允许配置用于使用者的自定义/共享线程池。默认情况下,每个使用者都有自己的单个线程池。

 

ScheduledExecutor 服务

调度程序 (scheduler)

使用来自 camel-spring 或 camel-quartz2 组件的 cron 调度程序

none

ScheduledPollConsumer Scheduler

schedulerProperties (scheduler)

在使用自定义调度程序或任何基于 Spring 的调度程序时配置额外属性。

 

map

startScheduler (scheduler)

调度程序是否应自动启动。

true

布尔值

timeUnit (scheduler)

初始延迟和延迟选项的时间单位。

毫秒

TimeUnit

useFixedDelay (scheduler)

控制是否使用固定延迟或固定率。详情请参阅 JDK 中的 ScheduledExecutorService。

true

布尔值

accesskey (安全性)

Amazon AWS 访问密钥

 

字符串

secretKey (security)

Amazon AWS Secret Key

 

字符串

23.3. Spring Boot Auto-Configuration

组件支持 15 个选项,它们如下所列。

Expand
名称描述默认类型

camel.component.aws-ddbstream.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-ddbstream.configuration.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-ddbstream.configuration.amazon-dynamo-db-streams-client

Amazon DynamoDB 客户端用于此端点的所有请求

 

AmazonDynamoDBStreams

camel.component.aws-ddbstream.configuration.iterator-type

定义 DynaboDB 流中的什么位置以开始获取记录。请注意,在流发现到实时前,使用 TRIM_HORIZON 可能会导致大量延迟。如果 AT,AFTER_SEQUENCE_NUENCE_NUMBER,则使用 sequenceNumberProvider MUST。

 

ShardIteratorType

camel.component.aws-ddbstream.configuration.max-results-per-request

在每个轮询中获取的最大记录数

 

整数

camel.component.aws-ddbstream.configuration.proxy-host

在实例化 DDBStreams 客户端时定义代理主机

 

字符串

camel.component.aws-ddbstream.configuration.proxy-port

在实例化 DDBStreams 客户端时定义代理端口

 

整数

camel.component.aws-ddbstream.configuration.region

DDBStreams 客户端需要正常工作的区域

 

字符串

camel.component.aws-ddbstream.configuration.secret-key

Amazon AWS Secret Key

 

字符串

camel.component.aws-ddbstream.configuration.sequence-number-provider

当使用两个 ShardIteratorType.AT、AFTER_SEQUENCE_NUMBER iterator 类型时的序列号的供应商。可以是 registry 引用,也可以是字面的序列号。

 

SequenceNumberProvider

camel.component.aws-ddbstream.configuration.table-name

dynamodb 表的名称

 

字符串

camel.component.aws-ddbstream.enabled

启用 aws-ddbstream 组件

true

布尔值

camel.component.aws-ddbstream.region

Amazon AWS Region

 

字符串

camel.component.aws-ddbstream.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.aws-ddbstream.secret-key

Amazon AWS Secret Key

 

字符串

所需的 DynampDBStream 组件选项

您必须在 registry 中提供 amazonDynamoDbStreamsClient,并配置了代理和相关凭证。

23.4. 序列号

您可以提供一个字面字符串作为序列号,或者在 registry 中提供 bean。使用 bean 的示例将您当前的位置保存在更改源中,并在 Camel 启动中恢复它。

提供大于 describe-streams 结果中最大序列号的错误,因为它将导致 AWS 调用返回 HTTP 400。

23.5. 批处理消费者

此组件实施 Batch Consumer。

这样,您可以让实例知道此批处理中有多少消息,而实例可让聚合器聚合这个数量的消息。

23.6. 使用

23.6.1. AmazonDynamoDBStreamsClient configuration

您需要创建一个 AmazonDynamoDBStreamsClient 实例并将其绑定到 registry

ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);

Region region = Region.getRegion(Regions.fromName(region));
region.createClient(AmazonDynamoDBStreamsClient.class, null, clientConfiguration);
// the 'null' here is the AWSCredentialsProvider which defaults to an instance of DefaultAWSCredentialsProviderChain

registry.bind("kinesisClient", client);
Copy to Clipboard Toggle word wrap

23.6.2. 提供 AWS 凭证

建议利用 DefaultAWSCredentialsProviderChain 获取凭证,这是创建新 ClientConfiguration 实例时的默认设置,但可以在调用 createClient (…​)时指定不同的 AWSCredentialsProvider

23.7. 与 Downtime 冲突

23.7.1. AWS DynamoDB Streams 中断时间少于 24 小时

消费者将从上一次看到的序列号(针对 CAMEL-9515进行了实施)进行恢复,因此,只要停机没有包括 DynamoDB 本身,因此您应该收到大量事件。

23.7.2. AWS DynamoDB Streams 中断 24 小时

假定 AWS 只保留 24 小时更改,因此无论有哪些缓解措施如何,您都会错过更改事件。

23.8. 依赖项

Maven 用户需要将以下依赖项添加到其 pom.xml 中。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.7 或更高版本)。

23.9. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • AWS 组件
    +

第 24 章 AWS EC2 组件

作为 Camel 版本 2.16 可用

EC2 组件支持创建、运行、启动、停止和终止 AWS EC2 实例。

前提条件

您必须有有效的 Amazon Web Services 开发人员帐户,且必须注册才能使用 Amazon EC2。如需更多信息,请参阅 Amazon EC2

24.1. URI 格式

aws-ec2://label[?options]
Copy to Clipboard Toggle word wrap

您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…​

24.2. URI 选项

AWS EC2 组件支持 5 选项,它们如下。

Expand
名称描述默认类型

配置 (高级)

AWS EC2 默认配置

 

EC2Configuration

region (producer)

EC2 客户端要正常工作的区域

 

字符串

accessKey (producer)

Amazon AWS 访问密钥

 

字符串

secretKey (producer)

Amazon AWS Secret Key

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

AWS EC2 端点使用 URI 语法配置:

aws-ec2:label
Copy to Clipboard Toggle word wrap

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

24.2.1. 路径名(1 参数):

Expand
名称描述默认类型

label

所需 的逻辑名称

 

字符串

24.2.2. 查询参数(8 参数):

Expand
名称描述默认类型

accessKey (producer)

Amazon AWS 访问密钥

 

字符串

amazonEc2Client (producer)

使用现有配置的 AmazonEC2Client 作为客户端

 

AmazonEC2Client

operation (producer)

执行 所需的操作。它可以是 createAndRunInstances, startInstances, stopInstances, describeInstances, describeInstances, describeInstances, rebootInstances, monitorInstances, unmonitorInstances, createTags 或 deleteTags

 

EC2Operations

proxyHost (producer)

在实例化 EC2 客户端时定义代理主机

 

字符串

proxyPort (producer)

在实例化 EC2 客户端时定义代理端口

 

整数

region (producer)

EC2 客户端要正常工作的区域

 

字符串

secretKey (producer)

Amazon AWS Secret Key

 

字符串

同步 (高级)

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

false

布尔值

24.3. Spring Boot Auto-Configuration

组件支持 12 个选项,它们如下所列。

Expand
名称描述默认类型

camel.component.aws-ec2.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-ec2.configuration.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-ec2.configuration.amazon-ec2-client

使用现有配置的 AmazonEC2Client 作为客户端

 

AmazonEC2Client

camel.component.aws-ec2.configuration.operation

要执行的操作。它可以是 createAndRunInstances, startInstances, stopInstances, describeInstances, describeInstances, describeInstances, rebootInstances, monitorInstances, unmonitorInstances, createTags 或 deleteTags

 

EC2Operations

camel.component.aws-ec2.configuration.proxy-host

在实例化 EC2 客户端时定义代理主机

 

字符串

camel.component.aws-ec2.configuration.proxy-port

在实例化 EC2 客户端时定义代理端口

 

整数

camel.component.aws-ec2.configuration.region

EC2 客户端要正常工作的区域

 

字符串

camel.component.aws-ec2.configuration.secret-key

Amazon AWS Secret Key

 

字符串

camel.component.aws-ec2.enabled

启用 aws-ec2 组件

true

布尔值

camel.component.aws-ec2.region

EC2 客户端要正常工作的区域

 

字符串

camel.component.aws-ec2.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.aws-ec2.secret-key

Amazon AWS Secret Key

 

字符串

所需的 EC2 组件选项

您必须在 Registry 或 accessKey 和 secretKey 中提供 amazonEc2Client,才能访问 Amazon EC2 服务。

24.4. 使用

24.4.1. EC2 producer 评估的消息标头

Expand
标头类型描述

CamelAwsEC2ImageId

字符串

AWS 市场的镜像 ID

CamelAwsEC2InstanceType

com.amazonaws.services.ec2.model.InstanceType

要创建并运行的实例类型

CamelAwsEC2Operation

字符串

我们要执行的操作

CamelAwsEC2InstanceMinCount

Int

您要运行的实例的 mininum 数量。

CamelAwsEC2InstanceMaxCount

Int

要运行的最大实例数。

CamelAwsEC2InstanceMonitoring

布尔值

定义是否希望监控正在运行的实例

CamelAwsEC2InstanceEbsOptimized

布尔值

定义创建实例是否针对 EBS I/O 进行优化。

CamelAwsEC2InstanceSecurityGroups

集合

与实例关联的安全组

CamelAwsEC2InstancesIds

集合

用于执行启动、停止、描述和终止操作的实例 IDS 集合。

CamelAwsEC2InstancesTags

集合

从 EC2 资源添加或删除的标签集合

依赖项

Maven 用户需要将以下依赖项添加到其 pom.xml 中。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.16 或更高版本)。

24.5. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • AWS 组件

第 25 章 AWS IAM 组件

作为 Camel 版本 2.23 可用

KMS 组件支持创建、运行、启动、停止和终止 AWS IAM 实例。

前提条件

您必须有有效的 Amazon Web Services 开发人员帐户,且必须注册才能使用 Amazon IAM。如需更多信息,请参阅 Amazon IAM

25.1. URI 格式

aws-kms://label[?options]
Copy to Clipboard Toggle word wrap

您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…​

25.2. URI 选项

AWS IAM 组件支持 5 个选项,它们如下所列。

Expand
名称描述默认类型

配置 (高级)

AWS IAM 默认配置

 

IAMConfiguration

accessKey (producer)

Amazon AWS 访问密钥

 

字符串

secretKey (producer)

Amazon AWS Secret Key

 

字符串

region (producer)

IAM 客户端需要正常工作的区域

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

AWS IAM 端点使用 URI 语法配置:

aws-iam:label
Copy to Clipboard Toggle word wrap

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

25.2.1. 路径名(1 参数):

Expand
名称描述默认类型

label

所需 的逻辑名称

 

字符串

25.2.2. 查询参数(8 参数):

Expand
名称描述默认类型

accessKey (producer)

Amazon AWS 访问密钥

 

字符串

iamClient (producer)

使用现有配置的 AWS IAM 作为客户端

 

AmazonIdentity ManagementClient

operation (producer)

所需的操作

 

IAMOperations

proxyHost (producer)

在实例化 KMS 客户端时定义代理主机

 

字符串

proxyPort (producer)

在实例化 KMS 客户端时定义代理端口

 

整数

region (producer)

KMS 客户端需要正常工作的区域

 

字符串

secretKey (producer)

Amazon AWS Secret Key

 

字符串

同步 (高级)

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

false

布尔值

25.3. Spring Boot Auto-Configuration

组件支持 12 个选项,它们如下所列。

Expand
名称描述默认类型

camel.component.aws-iam.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-iam.configuration.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-iam.configuration.iam-client

使用现有配置的 AWS IAM 作为客户端

 

AmazonIdentity ManagementClient

camel.component.aws-iam.configuration.operation

要执行的操作

 

IAMOperations

camel.component.aws-iam.configuration.proxy-host

在实例化 KMS 客户端时定义代理主机

 

字符串

camel.component.aws-iam.configuration.proxy-port

在实例化 KMS 客户端时定义代理端口

 

整数

camel.component.aws-iam.configuration.region

KMS 客户端需要正常工作的区域

 

字符串

camel.component.aws-iam.configuration.secret-key

Amazon AWS Secret Key

 

字符串

camel.component.aws-iam.enabled

是否启用 aws-iam 组件的自动配置。默认启用。

 

布尔值

camel.component.aws-iam.region

IAM 客户端需要正常工作的区域

 

字符串

camel.component.aws-iam.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.aws-iam.secret-key

Amazon AWS Secret Key

 

字符串

所需的 IAM 组件选项

您必须在 Registry 或 accessKey 和 secretKey 中提供 amazonKmsClient,才能访问 Amazon IAM 服务。

25.4. 使用

25.4.1. IAM producer 评估的消息标头

Expand
标头类型描述

CamelAwsIAMOperation

字符串

我们要执行的操作

CamelAwsIAMUsername

字符串

要管理的用户的用户名

CamelAwsIAMAccessKeyID

字符串

要管理的 accessKey

CamelAwsIAMAccessKeyStatus

字符串

您要设置的 AccessKey 的 Status 是 active 和 inactive

25.4.2. IAM Producer 操作

Camel-AWS IAM 组件在制作者端提供以下操作:

  • listAccessKeys
  • createUser
  • deleteUser
  • listUsers
  • getUser
  • createAccessKey
  • deleteAccessKey
  • updateAccessKey

依赖项

Maven 用户需要将以下依赖项添加到其 pom.xml 中。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.16 或更高版本)。

25.5. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • AWS 组件

第 26 章 AWS Kinesis 组件

作为 Camel 2.17 版提供

Kinesis 组件支持接收来自消息并将消息发送到 Amazon Kinesis 服务。

前提条件

您必须有有效的 Amazon Web Services 开发人员帐户,并被签名才能使用 Amazon Kinesis。如需更多信息,请访问 AWS Kinesis

26.1. URI 格式

aws-kinesis://stream-name[?options]
Copy to Clipboard Toggle word wrap

需要在使用流前创建流。
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…​

26.2. URI 选项

AWS Kinesis 组件支持 5 个选项,它们如下所列。

Expand
名称描述默认类型

配置 (高级)

AWS S3 默认配置

 

KinesisConfiguration

accessKey (common)

Amazon AWS 访问密钥

 

字符串

secretKey (common)

Amazon AWS Secret Key

 

字符串

region (common)

Amazon AWS Region

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

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

aws-kinesis:streamName
Copy to Clipboard Toggle word wrap

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

26.2.1. 路径名(1 参数):

Expand
名称描述默认类型

streamName

所需的 名称

 

字符串

26.2.2. 查询参数(30 参数):

Expand
名称描述默认类型

amazonKinesisClient (common)

Amazon Kinesis 客户端用于此端点的所有请求

 

AmazonKinesis

proxyHost (common)

在实例化 DDBStreams 客户端时定义代理主机

 

字符串

proxyPort (common)

在实例化 DDBStreams 客户端时定义代理端口

 

整数

region (common)

Kinesis 客户端需要工作的区域

 

字符串

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

iteratorType (consumer)

定义 Kinesis 流中的什么位置以开始获取记录

TRIM_HORIZON

ShardIteratorType

maxResultsPerRequest (consumer)

在每个轮询中获取的最大记录数

1

int

sendEmptyMessageWhenIdle (consumer)

如果轮询使用者没有轮询任何文件,您可以启用这个选项来发送空消息(无正文)。

false

布尔值

sequenceNumber (consumer)

从开始轮询的序列号。如果iteratorType 设置为 AFTER_SEQUENCE_NUMBER 或 AT_SEQUENCE_NUMBER

 

字符串

shardClosed (consumer)

定义在分片关闭时的行为。可能的值有 ignore、silent 和 fail。如果忽略了消息,并且消费者将从一开始重新启动,不会记录下来,并且消费者从一开始就开始记录,而消费者将从开始失败,则会引发 ReachedClosedStateException。

Ignore

KinesisShardClosed StrategyEnum

shardId (consumer)

定义 Kinesis 流中要获取记录的 shardId

 

字符串

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

pollStrategy (consumer)

可插拔 org.apache.camel.PollingConsumerPollingStrategy 允许您提供自定义实施来控制在轮询操作中通常会发生错误处理,然后再在 Camel 中创建并被路由。

 

PollingConsumerPoll Strategy

同步 (高级)

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

false

布尔值

backoffErrorThreshold (scheduler)

后续错误轮询(因某些错误导致的失败)的数量,在 backoffMultipler 应该启动前发生。

 

int

backoffIdleThreshold (scheduler)

后续闲置轮询的数量,在 backoffMultipler 应该启动之前发生。

 

int

backoffMultiplier (scheduler)

如果行中有多个后续闲置/errors,让调度的轮询消费者重新关闭。然后,倍数是下一次实际尝试发生前跳过的轮询数量。当使用这个选项时,还必须配置 backoffIdleThreshold 和/or backoffErrorThreshold。

 

int

延迟 (scheduler)

下次轮询前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。

500

long

greedy (scheduler)

如果启用了 greedy,则 ScheduledPollConsumer 将立即再次运行,如果上一运行轮询了 1 或更多消息。

false

布尔值

initialDelay (scheduler)

第一次轮询启动前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。

1000

long

runLoggingLevel (scheduler)

消费者日志轮询轮询时启动/完成日志行。此选项允许您为其配置日志级别。

TRACE

LoggingLevel

scheduledExecutorService (scheduler)

允许配置用于使用者的自定义/共享线程池。默认情况下,每个使用者都有自己的单个线程池。

 

ScheduledExecutor 服务

调度程序 (scheduler)

使用来自 camel-spring 或 camel-quartz2 组件的 cron 调度程序

none

ScheduledPollConsumer Scheduler

schedulerProperties (scheduler)

在使用自定义调度程序或任何基于 Spring 的调度程序时配置额外属性。

 

map

startScheduler (scheduler)

调度程序是否应自动启动。

true

布尔值

timeUnit (scheduler)

初始延迟和延迟选项的时间单位。

毫秒

TimeUnit

useFixedDelay (scheduler)

控制是否使用固定延迟或固定率。详情请参阅 JDK 中的 ScheduledExecutorService。

true

布尔值

accesskey (安全性)

Amazon AWS 访问密钥

 

字符串

secretKey (security)

Amazon AWS Secret Key

 

字符串

26.3. Spring Boot Auto-Configuration

组件支持 17 个选项,如下所示。

Expand
名称描述默认类型

camel.component.aws-kinesis.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-kinesis.configuration.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-kinesis.configuration.amazon-kinesis-client

Amazon Kinesis 客户端用于此端点的所有请求

 

AmazonKinesis

camel.component.aws-kinesis.configuration.iterator-type

定义 Kinesis 流中的什么位置以开始获取记录

 

ShardIteratorType

camel.component.aws-kinesis.configuration.max-results-per-request

在每个轮询中获取的最大记录数

1

整数

camel.component.aws-kinesis.configuration.proxy-host

在实例化 DDBStreams 客户端时定义代理主机

 

字符串

camel.component.aws-kinesis.configuration.proxy-port

在实例化 DDBStreams 客户端时定义代理端口

 

整数

camel.component.aws-kinesis.configuration.region

Kinesis 客户端需要工作的区域

 

字符串

camel.component.aws-kinesis.configuration.secret-key

Amazon AWS Secret Key

 

字符串

camel.component.aws-kinesis.configuration.sequence-number

从开始轮询的序列号。如果iteratorType 设置为 AFTER_SEQUENCE_NUMBER 或 AT_SEQUENCE_NUMBER

 

字符串

camel.component.aws-kinesis.configuration.shard-closed

定义在分片关闭时的行为。可能的值有 ignore、silent 和 fail。如果忽略了消息,并且消费者将从一开始重新启动,不会记录下来,并且消费者从一开始就开始记录,而消费者将从开始失败,则会引发 ReachedClosedStateException。

 

KinesisShardClosed StrategyEnum

camel.component.aws-kinesis.configuration.shard-id

定义 Kinesis 流中要获取记录的 shardId

 

字符串

camel.component.aws-kinesis.configuration.stream-name

流的名称

 

字符串

camel.component.aws-kinesis.enabled

启用 aws-kinesis 组件

true

布尔值

camel.component.aws-kinesis.region

Amazon AWS Region

 

字符串

camel.component.aws-kinesis.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.aws-kinesis.secret-key

Amazon AWS Secret Key

 

字符串

所需的 Kinesis 组件选项

您必须在 registry 中提供 amazonKinesisClient,并配置了代理和相关凭证。

26.4. 批处理消费者

此组件实施 Batch Consumer。

这样,您可以让实例知道此批处理中有多少消息,而实例可让聚合器聚合这个数量的消息。

26.5. 使用

26.5.1. Kinesis 使用者设置的消息标头

Expand
标头类型描述

CamelAwsKinesisSequenceNumber

字符串

记录的序列号。这代表为一个 String,因为它大小不是由 API 定义。如果将其用作数字类型,则请使用

CamelAwsKinesisApproximateArrivalTimestamp

字符串

AWS 分配为记录的 arrival 时间。

CamelAwsKinesisPartitionKey

字符串

标识流中分配给数据记录的分片。

26.5.2. AmazonKinesis 配置

您需要创建一个 AmazonKinesisClient 实例并将其绑定到 registry

ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);

Region region = Region.getRegion(Regions.fromName(region));
region.createClient(AmazonKinesisClient.class, null, clientConfiguration);
// the 'null' here is the AWSCredentialsProvider which defaults to an instance of DefaultAWSCredentialsProviderChain

registry.bind("kinesisClient", client);
Copy to Clipboard Toggle word wrap

然后,您必须在 amazonKinesisClient 选项中引用 AmazonKinesisClient。

from("aws-kinesis://mykinesisstream?amazonKinesisClient=#kinesisClient")
  .to("log:out?showAll=true");
Copy to Clipboard Toggle word wrap

26.5.3. 提供 AWS 凭证

建议利用 DefaultAWSCredentialsProviderChain 获取凭证,这是创建新 ClientConfiguration 实例时的默认设置,但可以在调用 createClient (…​)时指定不同的 AWSCredentialsProvider

Expand
标头类型描述

CamelAwsKinesisPartitionKey

字符串

要传递给 Kinesis 的 PartitionKey 来存储此记录。

CamelAwsKinesisSequenceNumber

字符串

可选参数来指示此记录的序列号。

Expand
标头类型描述

CamelAwsKinesisSequenceNumber

字符串

记录的顺序号,如 Response 语法中所定义

CamelAwsKinesisShardId

字符串

存储记录的分片 ID

26.6. 依赖项

Maven 用户需要将以下依赖项添加到其 pom.xml 中。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.17 或更高版本)。

26.7. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • AWS 组件

第 27 章 AWS Kinesis Firehose 组件

作为 Camel 版本 2.19 可用

Kinesis Firehose 组件支持向 Amazon Kinesis Firehose 服务发送消息。

前提条件

您必须有有效的 Amazon Web Services 开发人员帐户,且必须注册才能使用 Amazon Kinesis Firehose。如需更多信息,请参阅 AWS Kinesis Firehose

27.1. URI 格式

aws-kinesis-firehose://delivery-stream-name[?options]
Copy to Clipboard Toggle word wrap

需要在使用流前创建流。
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…​

27.2. URI 选项

AWS Kinesis Firehose 组件支持 5 个选项,它们如下所列。

Expand
名称描述默认类型

配置 (高级)

AWS Kinesis Firehose 默认配置

 

KinesisFirehose 配置

accessKey (producer)

Amazon AWS 访问密钥

 

字符串

secretKey (producer)

Amazon AWS Secret Key

 

字符串

region (producer)

Amazon AWS Region

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

AWS Kinesis Firehose 端点使用 URI 语法进行配置:

aws-kinesis-firehose:streamName
Copy to Clipboard Toggle word wrap

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

27.2.1. 路径名(1 参数):

Expand
名称描述默认类型

streamName

所需的 名称

 

字符串

27.2.2. 查询参数(7 参数):

Expand
名称描述默认类型

amazonKinesisFirehoseClient (producer)

Amazon Kinesis Firehose 客户端用于此端点的所有请求

 

AmazonKinesisFirehose

proxyHost (producer)

在实例化 DDBStreams 客户端时定义代理主机

 

字符串

proxyPort (producer)

在实例化 DDBStreams 客户端时定义代理端口

 

整数

region (producer)

Kinesis 客户端需要工作的区域

 

字符串

同步 (高级)

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

false

布尔值

accesskey (安全性)

Amazon AWS 访问密钥

 

字符串

secretKey (security)

Amazon AWS Secret Key

 

字符串

27.3. Spring Boot Auto-Configuration

组件支持 12 个选项,它们如下所列。

Expand
名称描述默认类型

camel.component.aws-kinesis-firehose.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-kinesis-firehose.configuration.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-kinesis-firehose.configuration.amazon-kinesis-firehose-client

Amazon Kinesis Firehose 客户端用于此端点的所有请求

 

AmazonKinesisFirehose

camel.component.aws-kinesis-firehose.configuration.proxy-host

在实例化 DDBStreams 客户端时定义代理主机

 

字符串

camel.component.aws-kinesis-firehose.configuration.proxy-port

在实例化 DDBStreams 客户端时定义代理端口

 

整数

camel.component.aws-kinesis-firehose.configuration.region

Kinesis 客户端需要工作的区域

 

字符串

camel.component.aws-kinesis-firehose.configuration.secret-key

Amazon AWS Secret Key

 

字符串

camel.component.aws-kinesis-firehose.configuration.stream-name

流的名称

 

字符串

camel.component.aws-kinesis-firehose.enabled

启用 aws-kinesis-firehose 组件

true

布尔值

camel.component.aws-kinesis-firehose.region

Amazon AWS Region

 

字符串

camel.component.aws-kinesis-firehose.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.aws-kinesis-firehose.secret-key

Amazon AWS Secret Key

 

字符串

所需的 Kinesis Firehose 组件选项

您必须在 registry 中提供 amazonKinesisClient,并配置了代理和相关凭证。

27.4. 使用

27.4.1. Amazon Kinesis Firehose 配置

您需要创建一个 AmazonKinesisClient 实例并将其绑定到 registry

ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);

Region region = Region.getRegion(Regions.fromName(region));
region.createClient(AmazonKinesisClient.class, null, clientConfiguration);
// the 'null' here is the AWSCredentialsProvider which defaults to an instance of DefaultAWSCredentialsProviderChain

registry.bind("kinesisFirehoseClient", client);
Copy to Clipboard Toggle word wrap

然后,您必须在 amazonKinesisFirehoseClient 选项中引用 AmazonKinesisFirehoseClient URI。

from("aws-kinesis-firehose://mykinesisdeliverystream?amazonKinesisFirehoseClient=#kinesisClient")
  .to("log:out?showAll=true");
Copy to Clipboard Toggle word wrap

27.4.2. 提供 AWS 凭证

建议利用 DefaultAWSCredentialsProviderChain 获取凭证,这是创建新 ClientConfiguration 实例时的默认设置,但可以在调用 createClient (…​)时指定不同的 AWSCredentialsProvider

Expand
标头类型描述

CamelAwsKinesisFirehoseRecordId

字符串

记录 ID,如 响应语法中定义的

27.5. 依赖项

Maven 用户需要将以下依赖项添加到其 pom.xml 中。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.19 或更高版本)。

27.6. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • AWS 组件

第 28 章 AWS KMS 组件

可作为 Camel 版本 2.21 可用

KMS 组件支持创建、运行、启动、停止和终止 AWS KMS 实例。

前提条件

您必须有有效的 Amazon Web Services 开发人员帐户,且必须注册才能使用 Amazon KMS。如需更多信息,请参阅 Amazon KMS

28.1. URI 格式

aws-kms://label[?options]
Copy to Clipboard Toggle word wrap

您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…​

28.2. URI 选项

AWS KMS 组件支持 5 个选项,它们如下。

Expand
名称描述默认类型

配置 (高级)

AWS KMS 默认配置

 

KMSConfiguration

accessKey (producer)

Amazon AWS 访问密钥

 

字符串

secretKey (producer)

Amazon AWS Secret Key

 

字符串

region (producer)

KMS 客户端需要正常工作的区域

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

AWS KMS 端点使用 URI 语法配置:

aws-kms:label
Copy to Clipboard Toggle word wrap

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

28.2.1. 路径名(1 参数):

Expand
名称描述默认类型

label

所需 的逻辑名称

 

字符串

28.2.2. 查询参数(8 参数):

Expand
名称描述默认类型

accessKey (producer)

Amazon AWS 访问密钥

 

字符串

kmsClient (producer)

使用现有配置的 AWS KMS 作为客户端

 

AWSKMS

operation (producer)

所需的操作

 

KMSOperations

proxyHost (producer)

在实例化 KMS 客户端时定义代理主机

 

字符串

proxyPort (producer)

在实例化 KMS 客户端时定义代理端口

 

整数

region (producer)

KMS 客户端需要正常工作的区域

 

字符串

secretKey (producer)

Amazon AWS Secret Key

 

字符串

同步 (高级)

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

false

布尔值

28.3. Spring Boot Auto-Configuration

组件支持 12 个选项,它们如下所列。

Expand
名称描述默认类型

camel.component.aws-kms.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-kms.configuration.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-kms.configuration.kms-client

使用现有配置的 AWS KMS 作为客户端

 

AWSKMS

camel.component.aws-kms.configuration.operation

要执行的操作

 

KMSOperations

camel.component.aws-kms.configuration.proxy-host

在实例化 KMS 客户端时定义代理主机

 

字符串

camel.component.aws-kms.configuration.proxy-port

在实例化 KMS 客户端时定义代理端口

 

整数

camel.component.aws-kms.configuration.region

KMS 客户端需要正常工作的区域

 

字符串

camel.component.aws-kms.configuration.secret-key

Amazon AWS Secret Key

 

字符串

camel.component.aws-kms.enabled

是否启用 aws-kms 组件自动配置。默认启用。

 

布尔值

camel.component.aws-kms.region

KMS 客户端需要正常工作的区域

 

字符串

camel.component.aws-kms.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.aws-kms.secret-key

Amazon AWS Secret Key

 

字符串

所需的 KMS 组件选项

您必须在 Registry 或 accessKey 和 secretKey 中提供 amazonKmsClient 访问 Amazon KMS 服务。

28.4. 使用

28.4.1. MQ producer 评估的消息标头

Expand
标头类型描述

CamelAwsKMSLimit

整数

执行 listKeys 操作时要返回的键数

CamelAwsKMSOperation

字符串

我们要执行的操作

CamelAwsKMSDescription

字符串

执行 createKey 操作时要使用的密钥描述

CamelAwsKMSKeyId

字符串

密钥 Id

28.4.2. KMS Producer 操作

Camel-AWS KMS 组件在制作者端提供以下操作:

  • listKeys
  • createKey
  • disableKey
  • scheduleKeyDeletion
  • describeKey
  • enableKey

依赖项

Maven 用户需要将以下依赖项添加到其 pom.xml 中。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.16 或更高版本)。

28.5. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • AWS 组件

第 29 章 AWS Lambda Component

可作为 Camel 版本 2.20 可用

Lambda 组件支持 create、get、list、delete 和 调用 AWS Lambda 功能。

前提条件

您必须有有效的 Amazon Web Services 开发人员帐户,并经过注册才能使用 Amazon Lambda。如需更多信息,请参阅 Amazon Lambda

在创建 Lambda 功能时,您需要指定一个 IAM 角色,该角色至少连接了 AWSLambdaBasicExecuteRole 策略。

警告

lambda 是地区服务。与 S3 存储桶不同,在给定区域中创建的 Lambda 功能在其他区域不可用。

29.1. URI 格式

aws-lambda://functionName[?options]
Copy to Clipboard Toggle word wrap

您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…​

29.2. URI 选项

AWS Lambda 组件支持 5 个选项,它们如下所列。

Expand
名称描述默认类型

配置 (高级)

AWS Lambda 默认配置

 

LambdaConfiguration

accessKey (producer)

Amazon AWS 访问密钥

 

字符串

secretKey (producer)

Amazon AWS Secret Key

 

字符串

region (producer)

Amazon AWS Region

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

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

aws-lambda:function
Copy to Clipboard Toggle word wrap

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

29.2.1. 路径名(1 参数):

Expand
名称描述默认类型

function

Lambda 功能 所需的 Name。

 

字符串

29.2.2. 查询参数(8 参数):

Expand
名称描述默认类型

operation (producer)

执行 所需的操作。它可以是 listFunctions、getFunction、createFunction、deleteFunction 或 callsFunction

 

LambdaOperations

region (producer)

Amazon AWS Region

 

字符串

awsLambdaClient (advanced)

使用现有配置的 AwsLambdaClient 作为客户端

 

AWSLambda

同步 (高级)

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

false

布尔值

proxyHost (proxy)

在实例化 Lambda 客户端时定义代理主机

 

字符串

proxyPort (proxy)

在实例化 Lambda 客户端时定义代理端口

 

整数

accesskey (安全性)

Amazon AWS 访问密钥

 

字符串

secretKey (security)

Amazon AWS Secret Key

 

字符串

29.3. Spring Boot Auto-Configuration

组件支持 13 个选项,它们如下所列。

Expand
名称描述默认类型

camel.component.aws-lambda.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-lambda.configuration.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-lambda.configuration.aws-lambda-client

使用现有配置的 AwsLambdaClient 作为客户端

 

AWSLambda

camel.component.aws-lambda.configuration.function

Lambda 函数的名称。

 

字符串

camel.component.aws-lambda.configuration.operation

要执行的操作。它可以是 listFunctions、getFunction、createFunction、deleteFunction 或 callsFunction

 

LambdaOperations

camel.component.aws-lambda.configuration.proxy-host

在实例化 Lambda 客户端时定义代理主机

 

字符串

camel.component.aws-lambda.configuration.proxy-port

在实例化 Lambda 客户端时定义代理端口

 

整数

camel.component.aws-lambda.configuration.region

Amazon AWS Region

 

字符串

camel.component.aws-lambda.configuration.secret-key

Amazon AWS Secret Key

 

字符串

camel.component.aws-lambda.enabled

是否启用 aws-lambda 组件的自动配置。默认启用。

 

布尔值

camel.component.aws-lambda.region

Amazon AWS Region

 

字符串

camel.component.aws-lambda.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.aws-lambda.secret-key

Amazon AWS Secret Key

 

字符串

所需的 Lambda 组件选项

您必须在 Registry 或 accessKey 和 secretKey 中提供 awsLambdaClient,才能访问 Amazon Lambda 服务。

29.4. 使用

29.4.1. Lambda producer 评估的消息标头

Expand
操作标头类型描述必需

All

CamelAwsLambdaOperation

字符串

想要执行的操作。覆盖作为查询参数传递的操作

createFunction

CamelAwsLambdaS3Bucket

字符串

包含部署软件包的 .zip 文件的 Amazon S3 存储桶名称。此存储桶必须位于您创建 Lambda 功能的同一 AWS 区域。

createFunction

CamelAwsLambdaS3Key

字符串

要上传的 Amazon S3 对象(部署软件包)密钥名称。

createFunction

CamelAwsLambdaS3ObjectVersion

字符串

要上传的 Amazon S3 对象(部署软件包)版本。

createFunction

CamelAwsLambdaZipFile

字符串

zip 文件的本地路径(部署软件包)。zip 文件的内容也可以放在消息正文中。

createFunction

CamelAwsLambdaRole

字符串

IAM 角色的 Amazon 资源名称(ARN),Lambda 在执行功能时假设它访问任何其他 Amazon Web Services(AWS)资源。

createFunction

CamelAwsLambdaRuntime

字符串

正在上传的 Lambda 函数的运行时环境(nodejs、nodejs4.3、nodejs6.10、java8、python2.7、python3.6、dotnetcore1.0、odejs4.3-edge)

createFunction

CamelAwsLambdaHandler

字符串

Lambda 调用的代码中的功能开始执行。对于 Node.js,它是您的功能中的 module-name.export 值。对于 Java,它可以是 package.class-name::handler 或 package.class-name。

createFunction

CamelAwsLambdaDescription

字符串

用户提供的描述。

createFunction

CamelAwsLambdaTargetArn

字符串

包含 Amazon SQS 队列或 Amazon SNS 主题的目标 ARN(Amazon Resource Name)的父对象。

createFunction

CamelAwsLambdaMemorySize

整数

为函数配置的内存大小(以 MB 为单位)。必须是 64 MB 的倍数。

createFunction

CamelAwsLambdaKMSKeyArn

字符串

用于加密您的功能环境变量 KMS 密钥的 Amazon 资源名称(ARN)。如果没有提供,AWS Lambda 将使用默认的服务密钥。

createFunction

CamelAwsLambdaPublish

布尔值

此布尔值参数可用于请求 AWS Lambda 来创建 Lambda 函数,并将版本发布为 atomic 操作。

createFunction

CamelAwsLambdaTimeout

整数

Lambda 应该终止功能的功能执行时间。默认值为 3 秒。

createFunction

CamelAwsLambdaTracingConfig

字符串

您的模块的跟踪设置(活动或通过)。

createFunction

CamelAwsLambdaEnvironmentVariables

Map<String, String>

代表环境的配置设置的键值对。

createFunction

CamelAwsLambdaEnvironmentTags

Map<String, String>

分配给新功能的标签(键值对)。

createFunction

CamelAwsLambdaSecurityGroupIds

列出<字符串>

如果您的 Lambda 功能访问 VPC 中的资源,则 VPC 中的一个或者多个安全组 ID 的列表。

createFunction

CamelAwsLambdaSubnetIds

列出<字符串>

如果您的 Lambda 功能访问 VPC 中的资源,则 VPC 中的一个或者多个子网 ID 的列表。

29.5. Avalaible Operations 列表

  • listFunctions
  • 得到Function,
  • createFunction
  • deleteFunction
  • invokeFunction
  • updateFunction
  • createEventSourceMapping
  • deleteEventSourceMapping
  • listEventSourceMapping

29.6. 示例

要了解组件如何工作,您可能会了解这个 集成测试

29.7. 依赖项

Maven 用户需要将以下依赖项添加到其 pom.xml 中。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.16 或更高版本)。

29.8. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • AWS 组件

第 30 章 AWS MQ 组件

可作为 Camel 版本 2.21 可用

EC2 组件支持创建、运行、启动、停止和终止 AWS MQ 实例。

前提条件

您必须拥有有效的 Amazon Web Services 开发人员帐户,并且必须注册才能使用 Amazon MQ。如需更多信息,请参阅 Amazon MQ

30.1. URI 格式

aws-mq://label[?options]
Copy to Clipboard Toggle word wrap

您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…​

30.2. URI 选项

AWS MQ 组件支持 5 个选项,它们如下。

Expand
名称描述默认类型

配置 (高级)

AWS MQ 默认配置

 

MQConfiguration

accessKey (producer)

Amazon AWS 访问密钥

 

字符串

secretKey (producer)

Amazon AWS Secret Key

 

字符串

region (producer)

MQ 客户端需要正常工作的区域

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

AWS MQ 端点使用 URI 语法配置:

aws-mq:label
Copy to Clipboard Toggle word wrap

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

30.2.1. 路径名(1 参数):

Expand
名称描述默认类型

label

所需 的逻辑名称

 

字符串

30.2.2. 查询参数(8 参数):

Expand
名称描述默认类型

accessKey (producer)

Amazon AWS 访问密钥

 

字符串

amazonMqClient (producer)

使用现有配置的 AmazonMQClient 作为客户端

 

AmazonMQ

operation (producer)

执行 所需的操作。它可以是 listBrokers,createBroker,deleteBroker

 

MQOperations

proxyHost (producer)

在实例化 MQ 客户端时定义代理主机

 

字符串

proxyPort (producer)

在实例化 MQ 客户端时定义代理端口

 

整数

region (producer)

MQ 客户端需要正常工作的区域

 

字符串

secretKey (producer)

Amazon AWS Secret Key

 

字符串

同步 (高级)

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

false

布尔值

30.3. Spring Boot Auto-Configuration

组件支持 12 个选项,它们如下所列。

Expand
名称描述默认类型

camel.component.aws-mq.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-mq.configuration.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-mq.configuration.amazon-mq-client

使用现有配置的 AmazonMQClient 作为客户端

 

AmazonMQ

camel.component.aws-mq.configuration.operation

要执行的操作。它可以是 listBrokers,createBroker,deleteBroker

 

MQOperations

camel.component.aws-mq.configuration.proxy-host

在实例化 MQ 客户端时定义代理主机

 

字符串

camel.component.aws-mq.configuration.proxy-port

在实例化 MQ 客户端时定义代理端口

 

整数

camel.component.aws-mq.configuration.region

MQ 客户端需要正常工作的区域

 

字符串

camel.component.aws-mq.configuration.secret-key

Amazon AWS Secret Key

 

字符串

camel.component.aws-mq.enabled

是否启用 aws-mq 组件的自动配置。默认启用。

 

布尔值

camel.component.aws-mq.region

MQ 客户端需要正常工作的区域

 

字符串

camel.component.aws-mq.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.aws-mq.secret-key

Amazon AWS Secret Key

 

字符串

所需的 EC2 组件选项

您必须在 Registry 或 accessKey 和 secretKey 中提供 amazonEc2Client,才能访问 Amazon EC2 服务。

30.4. 使用

30.4.1. MQ producer 评估的消息标头

Expand
标头类型描述

CamelAwsMQMaxResults

字符串

从 listBrokers 操作中检索的结果数量

CamelAwsMQBrokerName

字符串

代理名称

CamelAwsMQOperation

字符串

我们要执行的操作

CamelAwsMQBrokerId

字符串

代理 ID

CamelAwsMQBrokerDeploymentMode

字符串

在 createBroker 操作中的代理部署模式

CamelAwsMQBrokerInstanceType

字符串

createBroker 操作中的 EC2 机器的实例类型

CamelAwsMQBrokerEngine

字符串

MQ 的 Broker 引擎。默认为 ACTIVEMQ

CamelAwsMQBrokerEngineVersion

字符串

MQ 的 Broker Engine 版本。目前,您可以在 ACTIVEMQ 5.15.6 和 5.15.0 之间选择

CamelAwsMQBrokerUsers

list<User>

MQ 的用户列表

CamelAwsMQBrokerPubliclyAccessible

布尔值

如果 MQ 实例必须公开可用,或不能公开。默认为 false。

依赖项

Maven 用户需要将以下依赖项添加到其 pom.xml 中。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.16 或更高版本)。

30.5. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • AWS 组件

第 31 章 AWS S3 Storage Service Component

可作为 Camel 版本 2.8 使用

S3 组件支持从/到 Amazon 的 S3 服务存储和检索 objetc。

前提条件

您必须具有有效的 Amazon Web Services 开发人员帐户,并经过签名才能使用 Amazon S3。如需更多信息,请参阅 Amazon S3

31.1. URI 格式

aws-s3://bucketNameOrArn[?options]
Copy to Clipboard Toggle word wrap

如果存储桶不存在,则会创建它。
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…​

例如,若要从存储桶 helloBucket 读取文件 hello.txt,请使用以下代码片段:

from("aws-s3:helloBucket?accessKey=yourAccessKey&secretKey=yourSecretKey&prefix=hello.txt")
  .to("file:/var/downloaded");
Copy to Clipboard Toggle word wrap

31.2. URI 选项

AWS S3 Storage Service 组件支持 5 个选项,它们如下。

Expand
名称描述默认类型

配置 (高级)

AWS S3 默认配置

 

S3Configuration

accessKey (common)

Amazon AWS 访问密钥

 

字符串

secretKey (common)

Amazon AWS Secret Key

 

字符串

region (common)

bucket 所在的区域。这个选项在 com.amazonaws.services.s3.model.CreateBucketRequest 中使用。

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

AWS S3 Storage Service 端点使用 URI 语法进行配置:

aws-s3:bucketNameOrArn
Copy to Clipboard Toggle word wrap

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

31.2.1. 路径名(1 参数):

Expand
名称描述默认类型

bucketNameOrArn

所需的 Bucket name 或 ARN

 

字符串

31.2.2. 查询参数(50 参数):

Expand
名称描述默认类型

amazonS3Client (common)

引用链接:https://camel.apache.org/registry.htmlRegistry.amazonaws.services.sqs.AmazonS3。

 

AmazonS3

pathStyleAccess (common)

S3 客户端是否应使用路径风格的访问

false

布尔值

policy (common)

此队列的策略在 com.amazonaws.services.s3.AmazonS3#setBucketPolicy()方法中设置。

 

字符串

proxyHost (common)

在实例化 SQS 客户端时定义代理主机

 

字符串

proxyPort (common)

指定要在客户端定义中使用的代理端口。

 

整数

region (common)

S3 客户端需要工作的区域

 

字符串

useIAMCredentials (common)

设置 S3 客户端是否应该在 EC2 实例上加载凭证,或者预期传递静态凭证。

false

布尔值

encryptionMaterials (common)

Symmetric/Asymmetric 客户端使用量中使用的加密材料

 

EncryptionMaterials

useEncryption (common)

定义是否必须使用加密

false

布尔值

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

deleteAfterRead (consumer)

在检索了对象后,从 S3 中删除对象。只有提交 Exchange 时才会执行删除。如果进行回滚,则对象不会被删除。如果此选项为 false,则同一对象将会反复检索,并再次在轮询上再次进行。因此,您需要在路由中使用 Idempotent Consumer EIP 来过滤重复的。您可以使用 S3Constants#BUCKET_NAME 和 S3Constants#KEY 标头进行过滤,或者只有 S3Constants#KEY 标头。

true

布尔值

fileName (consumer)

使用给定文件名从存储桶获取对象

 

字符串

includeBody (consumer)

如果为 true,则交换正文将设置为文件内容的流。如果为 false,则标头将使用 S3 对象元数据设置,但正文会为空。这个选项与 autocloseBody 选项相关。如果将 includeBody 设置为 true,并将 autocloseBody 设为 false,则最多调用者关闭 S3Object 流。将 autocloseBody 设置为 true,将自动关闭 S3Object 流。

true

布尔值

maxConnections (consumer)

在 S3 客户端配置中设置 maxConnections 参数

60

int

maxMessagesPerPoll (consumer)

获取在每次轮询时轮询的最大消息数量。默认为没有限制,但使用 0 或负数数字将其禁用。

10

int

前缀 (使用者)

com.amazonaws.services.s3.model.ListObjectsRequest 中使用的前缀,仅用于消耗我们感兴趣的对象。

 

字符串

sendEmptyMessageWhenIdle (consumer)

如果轮询使用者没有轮询任何文件,您可以启用这个选项来发送空消息(无正文)。

false

布尔值

autocloseBody (consumer)

如果这个选项为 true,并且 includeBody 为 true,则在交换完成时将调用 S3Object.close ()方法。这个选项与 includeBody 选项相关。如果将 includeBody 设置为 true,并将 autocloseBody 设为 false,则最多调用者关闭 S3Object 流。将 autocloseBody 设置为 true,将自动关闭 S3Object 流。

true

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

pollStrategy (consumer)

可插拔 org.apache.camel.PollingConsumerPollingStrategy 允许您提供自定义实施来控制在轮询操作中通常会发生错误处理,然后再在 Camel 中创建并被路由。

 

PollingConsumerPoll Strategy

deleteAfterWrite (producer)

上传 S3 文件后删除文件对象

false

布尔值

multiPartUpload (producer)

如果是 true,则 camel 将以多部分格式上传文件,其部分大小决定由 partSize 的 选项决定

false

布尔值

operation (producer)

如果用户不想上传,则操作是要执行的操作

 

S3Operations

partSize (producer)

设置在多部分上传中使用的 partSize,默认大小为 25M。

26214400

long

serverSideEncryption (producer)

在使用 AWS 管理的密钥加密对象时,设置服务器端加密算法。例如,使用 AES256。

 

字符串

storageClass (producer)

要在 com.amazonaws.services.s3.model.PutObjectRequest 请求中设置的存储类。

 

字符串

awsKMSKeyId (producer)

在启用 KMS 时定义要使用的 KMS 密钥 ID

 

字符串

useAwsKMS (producer)

定义是否必须使用 KMS

false

布尔值

同步 (高级)

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

false

布尔值

accelerateModeEnabled ( advanced)

定义是否启用 accelerate Mode 为 true 或 false

false

布尔值

chunkedEncodingDisabled ( advanced)

定义 disabled Chunked Encoding 为 true 或 false

false

布尔值

dualstackEnabled ( advanced)

定义 Dualstack enabled 为 true 或 false

false

布尔值

forceGlobalBucketAccess Enabled (高级)

定义是否启用 Force Global Bucket Access 为 true 或 false

false

布尔值

payloadSigningEnabled ( advanced)

定义 Payload Signing 已启用为 true 或 false

false

布尔值

backoffErrorThreshold (scheduler)

后续错误轮询(因某些错误导致的失败)的数量,在 backoffMultipler 应该启动前发生。

 

int

backoffIdleThreshold (scheduler)

后续闲置轮询的数量,在 backoffMultipler 应该启动之前发生。

 

int

backoffMultiplier (scheduler)

如果行中有多个后续闲置/errors,让调度的轮询消费者重新关闭。然后,倍数是下一次实际尝试发生前跳过的轮询数量。当使用这个选项时,还必须配置 backoffIdleThreshold 和/or backoffErrorThreshold。

 

int

延迟 (scheduler)

下次轮询前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。

500

long

greedy (scheduler)

如果启用了 greedy,则 ScheduledPollConsumer 将立即再次运行,如果上一运行轮询了 1 或更多消息。

false

布尔值

initialDelay (scheduler)

第一次轮询启动前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。

1000

long

runLoggingLevel (scheduler)

消费者日志轮询轮询时启动/完成日志行。此选项允许您为其配置日志级别。

TRACE

LoggingLevel

scheduledExecutorService (scheduler)

允许配置用于使用者的自定义/共享线程池。默认情况下,每个使用者都有自己的单个线程池。

 

ScheduledExecutor 服务

调度程序 (scheduler)

使用来自 camel-spring 或 camel-quartz2 组件的 cron 调度程序

none

ScheduledPollConsumer Scheduler

schedulerProperties (scheduler)

在使用自定义调度程序或任何基于 Spring 的调度程序时配置额外属性。

 

map

startScheduler (scheduler)

调度程序是否应自动启动。

true

布尔值

timeUnit (scheduler)

初始延迟和延迟选项的时间单位。

毫秒

TimeUnit

useFixedDelay (scheduler)

控制是否使用固定延迟或固定率。详情请参阅 JDK 中的 ScheduledExecutorService。

true

布尔值

accesskey (安全性)

Amazon AWS 访问密钥

 

字符串

secretKey (security)

Amazon AWS Secret Key

 

字符串

31.3. Spring Boot Auto-Configuration

组件支持 34 个选项,它们如下所列。

Expand
名称描述默认类型

camel.component.aws-s3.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-s3.configuration.accelerate-mode-enabled

定义是否启用 accelerate Mode 为 true 或 false

false

布尔值

camel.component.aws-s3.configuration.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-s3.configuration.amazon-s3-client

引用链接:https://camel.apache.org/registry.htmlRegistry.amazonaws.services.sqs.AmazonS3。

 

AmazonS3

camel.component.aws-s3.configuration.autoclose-body

如果这个选项为 true,并且 includeBody 为 true,则在交换完成时将调用 S3Object.close ()方法。这个选项与 includeBody 选项相关。如果将 includeBody 设置为 true,并将 autocloseBody 设为 false,则最多调用者关闭 S3Object 流。将 autocloseBody 设置为 true,将自动关闭 S3Object 流。

true

布尔值

camel.component.aws-s3.configuration.aws-k-m-s-key-id

在启用 KMS 时定义要使用的 KMS 密钥 ID

 

字符串

camel.component.aws-s3.configuration.bucket-name

bucket 的名称。如果存储桶尚未存在,则会创建存储桶。

 

字符串

camel.component.aws-s3.configuration.chunked-encoding-disabled

定义 disabled Chunked Encoding 为 true 或 false

false

布尔值

camel.component.aws-s3.configuration.delete-after-read

在检索了对象后,从 S3 中删除对象。只有提交 Exchange 时才会执行删除。如果进行回滚,则对象不会被删除。如果此选项为 false,则同一对象将会反复检索,并再次在轮询上再次进行。因此,您需要在路由中使用 Idempotent Consumer EIP 来过滤重复的。您可以使用 S3Constants#BUCKET_NAME 和 S3Constants#KEY 标头进行过滤,或者只有 S3Constants#KEY 标头。

true

布尔值

camel.component.aws-s3.configuration.delete-after-write

上传 S3 文件后删除文件对象

false

布尔值

camel.component.aws-s3.configuration.dualstack-enabled

定义 Dualstack enabled 为 true 或 false

false

布尔值

camel.component.aws-s3.configuration.encryption-materials

Symmetric/Asymmetric 客户端使用量中使用的加密材料

 

EncryptionMaterials

camel.component.aws-s3.configuration.file-name

使用给定文件名从存储桶获取对象

 

字符串

camel.component.aws-s3.configuration.force-global-bucket-access-enabled

定义是否启用 Force Global Bucket Access 为 true 或 false

false

布尔值

camel.component.aws-s3.configuration.include-body

如果为 true,则交换正文将设置为文件内容的流。如果为 false,则标头将使用 S3 对象元数据设置,但正文会为空。这个选项与 autocloseBody 选项相关。如果将 includeBody 设置为 true,并将 autocloseBody 设为 false,则最多调用者关闭 S3Object 流。将 autocloseBody 设置为 true,将自动关闭 S3Object 流。

true

布尔值

camel.component.aws-s3.configuration.multi-part-upload

如果是 true,则 camel 将以多部分格式上传文件,其部分大小决定由 partSize 的 选项决定

false

布尔值

camel.component.aws-s3.configuration.operation

如果用户不想上传,则操作是要执行的操作

 

S3Operations

camel.component.aws-s3.configuration.part-size

设置在多部分上传中使用的 partSize,默认大小为 25M。

26214400

Long

camel.component.aws-s3.configuration.path-style-access

S3 客户端是否应使用路径风格的访问

false

布尔值

camel.component.aws-s3.configuration.payload-signing-enabled

定义 Payload Signing 已启用为 true 或 false

false

布尔值

camel.component.aws-s3.configuration.policy

此队列的策略在 com.amazonaws.services.s3.AmazonS3#setBucketPolicy()方法中设置。

 

字符串

camel.component.aws-s3.configuration.prefix

com.amazonaws.services.s3.model.ListObjectsRequest 中使用的前缀,仅用于消耗我们感兴趣的对象。

 

字符串

camel.component.aws-s3.configuration.proxy-host

在实例化 SQS 客户端时定义代理主机

 

字符串

camel.component.aws-s3.configuration.proxy-port

指定要在客户端定义中使用的代理端口。

 

整数

camel.component.aws-s3.configuration.region

S3 客户端需要工作的区域

 

字符串

camel.component.aws-s3.configuration.secret-key

Amazon AWS Secret Key

 

字符串

camel.component.aws-s3.configuration.server-side-encryption

在使用 AWS 管理的密钥加密对象时,设置服务器端加密算法。例如,使用 AES256。

 

字符串

camel.component.aws-s3.configuration.storage-class

要在 com.amazonaws.services.s3.model.PutObjectRequest 请求中设置的存储类。

 

字符串

camel.component.aws-s3.configuration.use-aws-k-m-s

定义是否必须使用 KMS

false

布尔值

camel.component.aws-s3.configuration.use-encryption

定义是否必须使用加密

false

布尔值

camel.component.aws-s3.enabled

启用 aws-s3 组件

true

布尔值

camel.component.aws-s3.region

bucket 所在的区域。这个选项在 com.amazonaws.services.s3.model.CreateBucketRequest 中使用。

 

字符串

camel.component.aws-s3.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.aws-s3.secret-key

Amazon AWS Secret Key

 

字符串

所需的 S3 组件选项

您必须提供 registry 中的 amazonS3Client 或您的 accessKey 和 secretKey 以访问 Amazon 的 S3

31.4. 批处理消费者

此组件实施 Batch Consumer。

这样,您可以让实例知道此批处理中有多少消息,而实例可让聚合器聚合这个数量的消息。

31.5. 使用

31.5.1. S3 producer 评估的消息标头

Expand
标头类型描述

CamelAwsS3BucketName

字符串

此对象的存储桶名称将存储或用于当前操作

CamelAwsS3BucketDestinationName

字符串

Camel 2.18 :将用于当前操作的 bucket Destination Name

CamelAwsS3ContentLength

Long

此对象的内容长度。

CamelAwsS3ContentType

字符串

此对象的内容类型。

CamelAwsS3ContentControl

字符串

Camel 2.8.2: 此对象的内容控制。

CamelAwsS3ContentDisposition

字符串

Camel 2.8.2: 此对象的内容划分。

CamelAwsS3ContentEncoding

字符串

Camel 2.8.2: 此对象的内容编码。

CamelAwsS3ContentMD5

字符串

Camel 2.8.2: 此对象的 md5 checksum。

CamelAwsS3DestinationKey

字符串

Camel 2.18 :目标密钥将用于当前操作

CamelAwsS3Key

字符串

此对象将存储下或将用于当前操作的密钥

CamelAwsS3LastModified

java.util.Date

Camel 2.8.2: 此对象的最后一个修改的时间戳。

CamelAwsS3Operation

字符串

Camel 2.18 :要执行的操作。允许的值有 copyObject, deleteObject, listBuckets, deleteBucket, downloadLink, listObjects

CamelAwsS3StorageClass

字符串

Camel 2.8.4: 此对象的存储类。

CamelAwsS3CannedAcl

字符串

Camel 2.11.0: 将应用到对象的 canned acl。有关允许的值,请参阅 com.amazonaws.services.s3.model.CannedAccessControlList

CamelAwsS3Acl

com.amazonaws.services.s3.model.AccessControlList

Camel 2.11.0: 一个良好构造的 Amazon S3 访问控制列表对象。如需更多详情,请参阅 com.amazonaws.services.s3.model.AccessControlList

CamelAwsS3Headers

Map<String,String>

Camel 2.15.0 :支持获取或设置自定义对象Metadata 标头。

CamelAwsS3ServerSideEncryption

字符串

Camel 2.16: 设置使用 AWS 管理的密钥加密对象时的服务器端加密算法。例如,使用 AES256。

CamelAwsS3VersionId

字符串

要从当前操作存储或返回的对象版本

31.5.2. S3 producer 设置的消息标头

Expand
标头类型描述

CamelAwsS3ETag

字符串

新上传对象的 ETag 值。

CamelAwsS3VersionId

字符串

新上传对象 的可选 版本 ID。

CamelAwsS3DownloadLinkExpiration

字符串

URL 下载链接的过期(millis)该链接将存储在 CamelAwsS3DownloadLink 响应标头中。

31.5.3. S3 消费者设置的消息标头

Expand
标头类型描述

CamelAwsS3Key

字符串

此对象的存储位置。

CamelAwsS3BucketName

字符串

包含此对象的存储桶的名称。

CamelAwsS3ETag

字符串

根据 RFC 1864,十六进制编码了关联的对象 128 位 MD5 摘要。此数据用作完整性检查,以验证调用者收到的数据是否为 Amazon S3 发送的数据。

CamelAwsS3LastModified

Date

Last-Modified 标头的值,指明 Amazon S3 最后记录了对关联对象的修改日期和时间。

CamelAwsS3VersionId

字符串

关联的 Amazon S3 对象的版本 ID(如果可用)。版本 ID 仅在对象上传到启用了对象版本的 Amazon S3 存储桶时分配给对象。

CamelAwsS3ContentType

字符串

Content-Type HTTP 标头,指明存储在关联对象中的内容类型。此标头的值是标准 MIME 类型。

CamelAwsS3ContentMD5

字符串

根据 RFC 1864,相关对象(内容 - 不包括标头)的 base64 编码 128 位 MD5 摘要。此数据用作消息完整性检查,以验证 Amazon S3 收到的数据是否与调用者发送的数据相同。

CamelAwsS3ContentLength

Long

Content-Length HTTP 标头表示关联对象的大小(以字节为单位)。

CamelAwsS3ContentEncoding

字符串

可选的 Content-Encoding HTTP 标头指定哪些内容编码已应用到对象,而且必须应用哪些解码机制才能获取 Content-Type 字段引用的介质类型。

CamelAwsS3ContentDisposition

字符串

可选的 Content-Disposition HTTP 标头指定 presentational 信息,如要保存对象的推荐文件名。

CamelAwsS3ContentControl

字符串

可选的 Cache-Control HTTP 标头,允许用户指定 HTTP 请求/reply 链的缓存行为。

CamelAwsS3ServerSideEncryption

字符串

Camel 2.16: 使用 AWS 管理的密钥加密对象时的服务器端加密算法。

31.5.4. S3 Producer 操作

Camel-AWS s3 组件在制作者端提供以下操作:

  • copyObject
  • deleteObject
  • listBuckets
  • deleteBucket
  • downloadLink
  • listObjects

31.5.5. 高级 AmazonS3 配置

如果您的 Camel 应用程序正在防火墙后面运行,或者您需要对 AmazonS3 实例配置进行更多控制,您可以创建自己的实例:

AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");

ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);

AmazonS3 client = new AmazonS3Client(awsCredentials, clientConfiguration);

registry.bind("client", client);
Copy to Clipboard Toggle word wrap

并在您的 Camel aws-s3 组件配置中引用它:

from("aws-s3://MyBucket?amazonS3Client=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");
Copy to Clipboard Toggle word wrap

31.5.6. 使用带有 S3 组件的 KMS

要使用 AWS KMS 对/解密数据进行加密/解密数据,您可以使用以下示例 2.21.x 中引入的选项来加密数据。

from("file:tmp/test?fileName=test.txt")
     .setHeader(S3Constants.KEY, constant("testFile"))
     .to("aws-s3://mybucket?amazonS3Client=#client&useAwsKMS=true&awsKMSKeyId=3f0637ad-296a-3dfe-a796-e60654fb128c");
Copy to Clipboard Toggle word wrap

这样,您将询问 S3,以使用 KMS 密钥 3f0637ad-296a-3dfe-a796-e60654fb128c 加密文件 test.txt。当您需要下载此文件时,解密将在下载前直接进行。

31.5.7. 将"useIAMCredentials"用于 s3 组件

要使用 AWS IAM 凭证,您必须首先验证您在 上启动 Camel 应用程序的 EC2 是否具有一个 IAM 角色,其中包含附加的适当策略以便有效地运行。请记住,这个功能应该只在远程实例上设置为"true"。要进一步说明,由于 IAM 是 AWS 特定组件,所以您仍然需要在本地使用静态凭证,但 AWS 环境现在应该更易于管理。在实现并理解后,您可以将 AWS 环境的查询参数 "useIAMCredentials" 设置为 "true"!要根据本地和远程环境有效地打开和关闭此项,您可以考虑使用系统环境变量启用这个查询参数。例如,您的代码可将"useIAMCredentials"查询参数设置为 "true",当系统名为 "isRemote" 的环境变量被设置为 true 时(有很多其他方法可以这样做,这应该是一个简单示例)。虽然它并不完全取消对静态凭证的要求,但在 AWS 环境中使用 IAM 凭证无需在远程环境中刷新,并添加主要的安全增强(IAM 凭证会在策略被更新时自动刷新一次)。这是管理凭证的 AWS 建议的方法,因此应该尽可能使用。

31.6. 依赖项

Maven 用户需要将以下依赖项添加到其 pom.xml 中。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.8 或更高版本)。

31.7. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • AWS 组件

第 32 章 AWS SimpleDB Component

作为 Camel 版本 2.9 提供。

sdb 组件支持从/检索到 Amazon 的 SDB 服务中的数据。

前提条件

您必须有有效的 Amazon Web Services 开发人员帐户,并且必须注册才能使用 Amazon SDB。如需更多信息,请参阅 Amazon SDB

32.1. URI 格式

aws-sdb://domainName[?options]
Copy to Clipboard Toggle word wrap

您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…​

32.2. URI 选项

AWS SimpleDB 组件没有选项。

AWS SimpleDB 端点使用 URI 语法配置:

aws-sdb:domainName
Copy to Clipboard Toggle word wrap

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

32.2.1. 路径名(1 参数):

Expand
名称描述默认类型

domainName

必需,当前使用的域的名称。

 

字符串

32.2.2. 查询参数(10 参数):

Expand
名称描述默认类型

accessKey (producer)

Amazon AWS 访问密钥

 

字符串

amazonSDBClient (producer)

将 AmazonSimpleDB 用作客户端

 

AmazonSimpleDB

consistentRead (producer)

决定在读取数据时是否应强制执行强一致性。

false

布尔值

maxNumberOfDomains (producer)

您要返回的域名的最大数量。范围为 1 到 100。

 

整数

operation (producer)

要执行的操作

PutAttributes

SdbOperations

proxyHost (producer)

在实例化 SDB 客户端时定义代理主机

 

字符串

proxyPort (producer)

在实例化 SDB 客户端时定义代理端口

 

整数

region (producer)

SDB 客户端需要工作的区域

 

字符串

secretKey (producer)

Amazon AWS Secret Key

 

字符串

同步 (高级)

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

false

布尔值

32.3. Spring Boot Auto-Configuration

组件支持 2 个选项,如下所示。

Expand
名称描述默认类型

camel.component.aws-sdb.enabled

启用 aws-sdb 组件

true

布尔值

camel.component.aws-sdb.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

所需的 SDB 组件选项

您必须在 Registry 或 accessKey 和 secretKey 中提供 amazonSDBClient,才能访问 Amazon 的 SDB

32.4. 使用

32.4.1. 由 SDB producer 评估的消息标头

Expand
标头类型描述

CamelAwsSdbAttributes

collection<Attribute>

要执行操作的属性列表。

CamelAwsSdbAttributeNames

collection<String>

要检索的属性的名称。

CamelAwsSdbConsistentRead

布尔值

决定在读取数据时是否应强制执行强一致性。

CamelAwsSdbDeletableItems

Collection<DeletableItem>

要在批处理中执行删除操作的项目列表。

CamelAwsSdbDomainName

字符串

当前使用的域的名称。

CamelAwsSdbItemName

字符串

此项目的唯一密钥

CamelAwsSdbMaxNumberOfDomains

整数

您要返回的域名的最大数量。范围为 1 * 到 100。

CamelAwsSdbNextToken

字符串

指定在什么位置启动域/item 名称列表的字符串。

CamelAwsSdbOperation

字符串

从 URI 选项覆盖操作。

CamelAwsSdbReplaceableAttributes

collection<ReplaceableAttribute>

要放入某个项的属性列表。

CamelAwsSdbReplaceableItems

Collection<ReplaceableItem>

要放入域的项目列表。

CamelAwsSdbSelectExpression

字符串

用于查询域的表达式。

CamelAwsSdbUpdateCondition

UpdateCondition

更新条件(如果指定)决定指定属性是否被更新/删除。

32.4.2. DomainMetadata 操作过程中设置的消息标头

Expand
标头类型描述

CamelAwsSdbTimestamp

整数

计算元数据的数据和时间(UNIX)秒。

CamelAwsSdbItemCount

整数

域中所有项目的数量。

CamelAwsSdbAttributeNameCount

整数

域中唯一属性名称的数量。

CamelAwsSdbAttributeValueCount

整数

域中所有属性名称/值对的数量。

CamelAwsSdbAttributeNameSize

Long

域中所有唯一属性名称的总大小(以字节为单位)。

CamelAwsSdbAttributeValueSize

Long

域中所有属性值的总大小(以字节为单位)。

CamelAwsSdbItemNameSize

Long

域中所有项名称的总大小(以字节为单位)。

32.4.3. 在 GetAttributes 操作过程中设置消息标头

Expand
标头类型描述

CamelAwsSdbAttributes

list<Attribute>

操作返回的属性列表。

32.4.4. ListDomains 操作过程中设置的消息标头

Expand
标头类型描述

CamelAwsSdbDomainNames

列出<字符串>

与表达式匹配的域名列表。

CamelAwsSdbNextToken

字符串

opaque 令牌表示超过指定的 MaxNumberOfDomains 所在域更多。

32.4.5. 在选择操作过程中设置消息标头

Expand
标头类型描述

CamelAwsSdbItems

list<Item>

与所选表达式匹配的项目列表。

CamelAwsSdbNextToken

字符串

opaque 令牌表示匹配了 MaxNumberOfItems 的项目数量、响应大小超过 1MB 字节,或者执行时间超过 5 秒。

32.4.6. 高级 AmazonSimpleDB 配置

如果您需要对 AmazonSimpleDB 实例配置进行更多的控制,您可以创建自己的实例并从 URI 引用它:

from("direct:start")
.to("aws-sdb://domainName?amazonSDBClient=#client");
Copy to Clipboard Toggle word wrap

#client 指的是 registry 中的 AmazonSimpleDB

例如,如果您的 Camel 应用程序是在防火墙后面运行:

AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);

AmazonSimpleDB client = new AmazonSimpleDBClient(awsCredentials, clientConfiguration);

registry.bind("client", client);
Copy to Clipboard Toggle word wrap

32.5. 依赖项

Maven 用户需要将以下依赖项添加到其 pom.xml 中。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.8.4 或更高版本)。

32.6. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • AWS 组件

第 33 章 AWS Simple Email Service 组件

作为 Camel 版本 2.9 提供。

ses 组件支持向 Amazon 的 SES 服务发送电子邮件。

前提条件

您必须有有效的 Amazon Web Services 开发人员帐户,且必须注册才能使用 Amazon SES。如需更多信息,请参阅 Amazon SES

33.1. URI 格式

aws-ses://from[?options]
Copy to Clipboard Toggle word wrap

您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…​

33.2. URI 选项

AWS Simple Email Service 组件支持 5 选项,它们如下。

Expand
名称描述默认类型

配置 (高级)

AWS SES 默认配置

 

SesConfiguration

accessKey (producer)

Amazon AWS 访问密钥

 

字符串

secretKey (producer)

Amazon AWS Secret Key

 

字符串

region (producer)

SES 客户端需要工作的区域

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

AWS Simple Email Service 端点使用 URI 语法配置:

aws-ses:from
Copy to Clipboard Toggle word wrap

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

33.2.1. 路径名(1 参数):

Expand
名称描述默认类型

from

需要 发送者的电子邮件地址。

 

字符串

33.2.2. 查询参数(11 参数):

Expand
名称描述默认类型

amazonSESClient (producer)

使用 AmazonSimpleEmailService 作为客户端

 

AmazonSimpleEmail Service

proxyHost (producer)

在实例化 SES 客户端时定义代理主机

 

字符串

proxyPort (producer)

在实例化 SES 客户端时定义代理端口

 

整数

region (producer)

SES 客户端需要工作的区域

 

字符串

replyToAddresses (producer)

对该信息的回复地址列表(es),使用 'CamelAwsSesReplyToAddresses' 标头覆盖它。

 

list

returnPath (producer)

退回通知要转发的电子邮件地址,使用 'CamelAwsSesReturnPath' 标头覆盖它。

 

字符串

subject (producer)

如果消息标题为 'CamelAwsSesSubject',则使用该主题。

 

字符串

to (producer)

目标电子邮件地址列表。可以使用 'CamelAwsSesTo' 标头覆盖n。

 

list

同步 (高级)

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

false

布尔值

accesskey (安全性)

Amazon AWS 访问密钥

 

字符串

secretKey (security)

Amazon AWS Secret Key

 

字符串

33.3. Spring Boot Auto-Configuration

组件支持 16 个选项,如下所示。

Expand
名称描述默认类型

camel.component.aws-ses.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-ses.configuration.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-ses.configuration.amazon-s-e-s-client

使用 AmazonSimpleEmailService 作为客户端

 

AmazonSimpleEmail Service

camel.component.aws-ses.configuration.from

发件人的电子邮件地址。

 

字符串

camel.component.aws-ses.configuration.proxy-host

在实例化 SES 客户端时定义代理主机

 

字符串

camel.component.aws-ses.configuration.proxy-port

在实例化 SES 客户端时定义代理端口

 

整数

camel.component.aws-ses.configuration.region

SES 客户端需要工作的区域

 

字符串

camel.component.aws-ses.configuration.reply-to-addresses

对该信息的回复地址列表(es),使用 'CamelAwsSesReplyToAddresses' 标头覆盖它。

 

list

camel.component.aws-ses.configuration.return-path

退回通知要转发的电子邮件地址,使用 'CamelAwsSesReturnPath' 标头覆盖它。

 

字符串

camel.component.aws-ses.configuration.secret-key

Amazon AWS Secret Key

 

字符串

camel.component.aws-ses.configuration.subject

如果消息标题为 'CamelAwsSesSubject',则使用该主题。

 

字符串

camel.component.aws-ses.configuration.to

目标电子邮件地址列表。可以使用 'CamelAwsSesTo' 标头覆盖n。

 

list

camel.component.aws-ses.enabled

启用 aws-ses 组件

true

布尔值

camel.component.aws-ses.region

SES 客户端需要工作的区域

 

字符串

camel.component.aws-ses.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.aws-ses.secret-key

Amazon AWS Secret Key

 

字符串

所需的 SES 组件选项

您必须在 Registry 或 accessKey 和 secretKey 中提供 amazonSESClient,才能访问 Amazon 的 SES

33.4. 使用

33.4.1. 由 SES producer 评估的消息标头

Expand
标头类型描述

CamelAwsSesFrom

字符串

发件人的电子邮件地址。

CamelAwsSesTo

列出<字符串>

此电子邮件的目的地。

CamelAwsSesSubject

字符串

消息的主题。

CamelAwsSesReplyToAddresses

列出<字符串>

邮件的答复电子邮件地址。

CamelAwsSesReturnPath

字符串

要转发退回通知的电子邮件地址。

CamelAwsSesHtmlEmail

布尔值

自 Camel 2.12.3 起,显示电子邮件内容是否为 HTML 的标记。

33.4.2. 由 SES producer 设置的消息标头

Expand
标头类型描述

CamelAwsSesMessageId

字符串

Amazon SES 消息 ID。

33.4.3. 高级 AmazonSimpleEmailService 配置

如果您需要更多对 AmazonSimpleEmailService 实例配置进行更多的控制,您可以创建自己的实例并从 URI 引用它:

from("direct:start")
.to("aws-ses://example@example.com?amazonSESClient=#client");
Copy to Clipboard Toggle word wrap

#client 指的是 registry 中的 AmazonSimpleEmailService

例如,如果您的 Camel 应用程序是在防火墙后面运行:

AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);
AmazonSimpleEmailService client = new AmazonSimpleEmailServiceClient(awsCredentials, clientConfiguration);

registry.bind("client", client);
Copy to Clipboard Toggle word wrap

33.5. 依赖项

Maven 用户需要将以下依赖项添加到其 pom.xml 中。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.8.4 或更高版本)。

33.6. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • AWS 组件

第 34 章 AWS Simple notification System 组件

可作为 Camel 版本 2.8 使用

SNS 组件允许将消息发送到 Amazon Simple Notification Topic。Amazon API 的实现由 AWS SDK 提供。

前提条件

您必须具有有效的 Amazon Web Services 开发人员帐户,并经过签名才能使用 Amazon SNS。如需更多信息,请参阅 Amazon SNS

34.1. URI 格式

aws-sns://topicNameOrArn[?options]
Copy to Clipboard Toggle word wrap

如果主题不存在,则会创建这些主题。
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…​

34.2. URI 选项

AWS Simple Notification System 组件支持 5 选项,它们如下。

Expand
名称描述默认类型

配置 (高级)

AWS SNS 默认配置

 

SnsConfiguration

accessKey (producer)

Amazon AWS 访问密钥

 

字符串

secretKey (producer)

Amazon AWS Secret Key

 

字符串

region (producer)

SNS 客户端需要工作的区域

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

AWS Simple Notification System 端点使用 URI 语法配置:

aws-sns:topicNameOrArn
Copy to Clipboard Toggle word wrap

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

34.2.1. 路径名(1 参数):

Expand
名称描述默认类型

topicNameOrArn

所需的 主题名称或 ARN

 

字符串

34.2.2. 查询参数(11 参数):

Expand
名称描述默认类型

amazonSNSClient (producer)

使用 AmazonSNS 作为客户端

 

AmazonSNS

headerFilterStrategy (producer)

使用自定义 HeaderFilterStrategy 将标头映射到/来自 Camel。

 

HeaderFilterStrategy

messageStructure (producer)

要使用的消息结构,如 json

 

字符串

policy (producer)

此队列的策略

 

字符串

proxyHost (producer)

在实例化 SNS 客户端时定义代理主机

 

字符串

proxyPort (producer)

在实例化 SNS 客户端时定义代理端口

 

整数

region (producer)

SNS 客户端需要工作的区域

 

字符串

subject (producer)

如果邮件标题为"CamelAwsSubject"不存在,将使用的主题。

 

字符串

同步 (高级)

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

false

布尔值

accesskey (安全性)

Amazon AWS 访问密钥

 

字符串

secretKey (security)

Amazon AWS Secret Key

 

字符串

34.3. Spring Boot Auto-Configuration

组件支持 16 个选项,如下所示。

Expand
名称描述默认类型

camel.component.aws-sns.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-sns.configuration.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-sns.configuration.amazon-s-n-s-client

使用 AmazonSNS 作为客户端

 

AmazonSNS

camel.component.aws-sns.configuration.message-structure

要使用的消息结构,如 json

 

字符串

camel.component.aws-sns.configuration.policy

此队列的策略

 

字符串

camel.component.aws-sns.configuration.proxy-host

在实例化 SNS 客户端时定义代理主机

 

字符串

camel.component.aws-sns.configuration.proxy-port

在实例化 SNS 客户端时定义代理端口

 

整数

camel.component.aws-sns.configuration.region

SNS 客户端需要工作的区域

 

字符串

camel.component.aws-sns.configuration.secret-key

Amazon AWS Secret Key

 

字符串

camel.component.aws-sns.configuration.subject

如果邮件标题为"CamelAwsSubject"不存在,将使用的主题。

 

字符串

camel.component.aws-sns.configuration.topic-arn

分配给创建的主题的 Amazon 资源名称(ARN)。

 

字符串

camel.component.aws-sns.configuration.topic-name

主题的名称

 

字符串

camel.component.aws-sns.enabled

启用 aws-sns 组件

true

布尔值

camel.component.aws-sns.region

SNS 客户端需要工作的区域

 

字符串

camel.component.aws-sns.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.aws-sns.secret-key

Amazon AWS Secret Key

 

字符串

所需的 SNS 组件选项

您必须提供 registry 中的 amazonSNSClient 或您的 accessKey 和 secretKey 以访问 Amazon 的 SNS

34.4. 使用

34.4.1. SNS producer 评估的消息标头

Expand
标头类型描述

CamelAwsSnsSubject

字符串

Amazon SNS 消息主题。如果没有设置,则使用 SnsConfiguration 中的主题。

34.4.2. SNS producer 设置的消息标头

Expand
标头类型描述

CamelAwsSnsMessageId

字符串

Amazon SNS 消息 ID。

34.4.3. 高级 AmazonSNS 配置

如果需要更多对 AmazonSNS 实例配置进行控制,您可以创建自己的实例,并从 URI 引用它:

from("direct:start")
.to("aws-sns://MyTopic?amazonSNSClient=#client");
Copy to Clipboard Toggle word wrap

#client 指的是 Registry 中的 AmazonSNS

例如,如果您的 Camel 应用程序是在防火墙后面运行:

AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);
AmazonSNS client = new AmazonSNSClient(awsCredentials, clientConfiguration);

registry.bind("client", client);
Copy to Clipboard Toggle word wrap

34.5. 依赖项

Maven 用户需要将以下依赖项添加到其 pom.xml 中。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.8 或更高版本)。

34.6. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • AWS 组件

第 35 章 AWS Simple Queue Service 组件

可作为 Camel 版本 2.6 提供。

sqs 组件支持向 Amazon 的 SQS 服务发送和接收信息。

前提条件

您必须有有效的 Amazon Web Services 开发人员帐户,并被签名才能使用 Amazon SQS。如需更多信息,请参阅 Amazon SQS

35.1. URI 格式

aws-sqs://queueNameOrArn[?options]
Copy to Clipboard Toggle word wrap

如果队列不存在,则会创建队列。
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…​

35.2. URI 选项

AWS Simple Queue Service 组件支持 5 选项,它们如下。

Expand
名称描述默认类型

配置 (高级)

AWS SQS 默认配置

 

SqsConfiguration

accessKey (common)

Amazon AWS 访问密钥

 

字符串

secretKey (common)

Amazon AWS Secret Key

 

字符串

region (common)

指定可与 queueOwnerAWSAccountId 一起使用的队列区域,以构建服务 URL。

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

AWS Simple Queue Service 端点使用 URI 语法配置:

aws-sqs:queueNameOrArn
Copy to Clipboard Toggle word wrap

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

35.2.1. 路径名(1 参数):

Expand
名称描述默认类型

queueNameOrArn

所需的 队列名称或 ARN

 

字符串

35.2.2. 查询参数(48 参数):

Expand
名称描述默认类型

amazonAWSHost (common)

Amazon AWS 云的主机名。

amazonaws.com

字符串

amazonSQSClient (common)

使用 AmazonSQS 作为客户端

 

AmazonSQS

headerFilterStrategy (common)

使用自定义 HeaderFilterStrategy 将标头映射到/来自 Camel。

 

HeaderFilterStrategy

queueOwnerAWSAccountId (common)

当您需要使用不同的帐户拥有者时,请指定队列拥有者 aws 帐户 id。

 

字符串

region (common)

指定可与 queueOwnerAWSAccountId 一起使用的队列区域,以构建服务 URL。

 

字符串

attributeNames (consumer)

要在消耗时接收的属性名称列表。可以使用逗号分隔多个名称。

 

字符串

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

concurrentConsumers (consumer)

允许您使用多个线程轮询 sqs 队列来增加吞吐量

1

int

defaultVisibilityTimeout (consumer)

默认可见性超时(以秒为单位)

 

整数

deleteAfterRead (consumer)

读取后,从 SQS 删除消息

true

布尔值

deleteIfFiltered (consumer)

如果交换无法通过过滤器,则是否将 DeleteMessage 发送到 SQS 队列。如果 'false' 和 Exchange 没有通过路由上游的 Camel 过滤器进行,则不会发送 DeleteMessage。

true

布尔值

extendMessageVisibility (consumer)

如果启用,则调度的后台任务将保留扩展 SQS 上消息可见性。如果处理消息需要很长时间,则需要这个操作。如果设为 true defaultVisibilityTimeout,则必须设置。请参阅 Amazon 文档的详细信息。

false

布尔值

maxMessagesPerPoll (consumer)

获取在每次轮询时轮询的最大消息数量。默认为没有限制,但使用 0 或负数数字将其禁用。

 

int

messageAttributeNames (consumer)

要在消耗时接收的消息属性名称列表。可以使用逗号分隔多个名称。

 

字符串

sendEmptyMessageWhenIdle (consumer)

如果轮询使用者没有轮询任何文件,您可以启用这个选项来发送空消息(无正文)。

false

布尔值

visibilityTimeout (consumer)

在由 ReceiveMessage 请求在 com.amazonaws.services.sqs.model.SetQueueAttributesRequest 中检索后,接收的消息从后续检索请求中隐藏的时间(以秒为单位)。这只在它与 defaultVisibilityTimeout 不同时才有意义。它永久更改队列可见性超时属性。

 

整数

waitTimeSeconds (consumer)

ReceiveMessage action 调用将等待持续持续一个消息以包含在响应中的持续时间(以秒为单位)(0 到 20)。

 

整数

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

pollStrategy (consumer)

可插拔 org.apache.camel.PollingConsumerPollingStrategy 允许您提供自定义实施来控制在轮询操作中通常会发生错误处理,然后再在 Camel 中创建并被路由。

 

PollingConsumerPoll Strategy

delaySeconds (producer)

延迟发送消息的秒数。

 

整数

messageDeduplicationId Strategy (producer)

仅限 FIFO 队列。在消息上设置 messageDeduplicationId 的策略。可以是以下选项之一: useExchangeId,使用ContentBasedDeduplication。对于 useContentBasedDeduplication 选项,消息中不会设置 messageDeduplicationId。

useExchangeId

MessageDeduplicationId Strategy

messageGroupIdStrategy (producer)

仅限 FIFO 队列。在消息上设置 messageGroupId 的策略。可以是以下选项之一: useConstant、useExchangeId、使用PropertyValue。对于 usePropertyValue 选项,将使用属性 CamelAwsMessageGroupId。

 

MessageGroupIdStrategy

delayQueue (advanced)

定义是否要将 delaySeconds 选项应用到队列或单个消息

false

布尔值

queueUrl (advanced)

明确定义 queueUrl。所有其他参数(将影响 queueUrl)将被忽略。为了测试目的,可使用此参数连接到 SQS 的模拟实施。

 

字符串

同步 (高级)

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

false

布尔值

backoffErrorThreshold (scheduler)

后续错误轮询(因某些错误导致的失败)的数量,在 backoffMultipler 应该启动前发生。

 

int

backoffIdleThreshold (scheduler)

后续闲置轮询的数量,在 backoffMultipler 应该启动之前发生。

 

int

backoffMultiplier (scheduler)

如果行中有多个后续闲置/errors,让调度的轮询消费者重新关闭。然后,倍数是下一次实际尝试发生前跳过的轮询数量。当使用这个选项时,还必须配置 backoffIdleThreshold 和/or backoffErrorThreshold。

 

int

延迟 (scheduler)

下次轮询前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。

500

long

greedy (scheduler)

如果启用了 greedy,则 ScheduledPollConsumer 将立即再次运行,如果上一运行轮询了 1 或更多消息。

false

布尔值

initialDelay (scheduler)

第一次轮询启动前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。

1000

long

runLoggingLevel (scheduler)

消费者日志轮询轮询时启动/完成日志行。此选项允许您为其配置日志级别。

TRACE

LoggingLevel

scheduledExecutorService (scheduler)

允许配置用于使用者的自定义/共享线程池。默认情况下,每个使用者都有自己的单个线程池。

 

ScheduledExecutor 服务

调度程序 (scheduler)

使用来自 camel-spring 或 camel-quartz2 组件的 cron 调度程序

none

ScheduledPollConsumer Scheduler

schedulerProperties (scheduler)

在使用自定义调度程序或任何基于 Spring 的调度程序时配置额外属性。

 

map

startScheduler (scheduler)

调度程序是否应自动启动。

true

布尔值

timeUnit (scheduler)

初始延迟和延迟选项的时间单位。

毫秒

TimeUnit

useFixedDelay (scheduler)

控制是否使用固定延迟或固定率。详情请参阅 JDK 中的 ScheduledExecutorService。

true

布尔值

proxyHost (proxy)

在实例化 SQS 客户端时定义代理主机

 

字符串

proxyPort (proxy)

在实例化 SQS 客户端时定义代理端口

 

整数

maximumMessageSize (queue)

SQS 消息可包含此队列的 maximumMessageSize(以字节为单位)。

 

整数

messageRetentionPeriod (queue)

messageRetentionPeriod(以秒为单位)由 SQS 保留此队列的消息。

 

整数

policy (queue)

此队列的策略

 

字符串

receiveMessageWaitTime Seconds (queue)

如果您没有在请求中指定 WaitTimeSeconds,则队列属性 ReceiveMessageWaitTimeSeconds 用于确定要等待的时长。

 

整数

redrivePolicy (queue)

指定向 DeadLetter 队列发送消息的策略。请参阅 Amazon 文档。

 

字符串

accesskey (安全性)

Amazon AWS 访问密钥

 

字符串

secretKey (security)

Amazon AWS Secret Key

 

字符串

35.3. Spring Boot Auto-Configuration

组件支持 31 选项,如下所示。

Expand
名称描述默认类型

camel.component.aws-sqs.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-sqs.configuration.access-key

Amazon AWS 访问密钥

 

字符串

camel.component.aws-sqs.configuration.amazon-a-w-s-host

Amazon AWS 云的主机名。

amazonaws.com

字符串

camel.component.aws-sqs.configuration.amazon-s-q-s-client

使用 AmazonSQS 作为客户端

 

AmazonSQS

camel.component.aws-sqs.configuration.attribute-names

要在消耗时接收的属性名称列表。可以使用逗号分隔多个名称。

 

字符串

camel.component.aws-sqs.configuration.concurrent-consumers

允许您使用多个线程轮询 sqs 队列来增加吞吐量

1

整数

camel.component.aws-sqs.configuration.default-visibility-timeout

默认可见性超时(以秒为单位)

 

整数

camel.component.aws-sqs.configuration.delay-queue

定义是否要将 delaySeconds 选项应用到队列或单个消息

false

布尔值

camel.component.aws-sqs.configuration.delay-seconds

延迟发送消息的秒数。

 

整数

camel.component.aws-sqs.configuration.delete-after-read

读取后,从 SQS 删除消息

true

布尔值

camel.component.aws-sqs.configuration.delete-if-filtered

如果交换无法通过过滤器,则是否将 DeleteMessage 发送到 SQS 队列。如果 'false' 和 Exchange 没有通过路由上游的 Camel 过滤器进行,则不会发送 DeleteMessage。

true

布尔值

camel.component.aws-sqs.configuration.extend-message-visibility

如果启用,则调度的后台任务将保留扩展 SQS 上消息可见性。如果处理消息需要很长时间,则需要这个操作。如果设为 true defaultVisibilityTimeout,则必须设置。请参阅 Amazon 文档的详细信息。

false

布尔值

camel.component.aws-sqs.configuration.maximum-message-size

SQS 消息可包含此队列的 maximumMessageSize(以字节为单位)。

 

整数

camel.component.aws-sqs.configuration.message-attribute-names

要在消耗时接收的消息属性名称列表。可以使用逗号分隔多个名称。

 

字符串

camel.component.aws-sqs.configuration.message-retention-period

messageRetentionPeriod(以秒为单位)由 SQS 保留此队列的消息。

 

整数

camel.component.aws-sqs.configuration.policy

此队列的策略

 

字符串

camel.component.aws-sqs.configuration.proxy-host

在实例化 SQS 客户端时定义代理主机

 

字符串

camel.component.aws-sqs.configuration.proxy-port

在实例化 SQS 客户端时定义代理端口

 

整数

camel.component.aws-sqs.configuration.queue-name

队列的名称。如果队列不存在,则会创建队列。

 

字符串

camel.component.aws-sqs.configuration.queue-owner-a-w-s-account-id

当您需要使用不同的帐户拥有者时,请指定队列拥有者 aws 帐户 id。

 

字符串

camel.component.aws-sqs.configuration.queue-url

明确定义 queueUrl。所有其他参数(将影响 queueUrl)将被忽略。为了测试目的,可使用此参数连接到 SQS 的模拟实施。

 

字符串

camel.component.aws-sqs.configuration.receive-message-wait-time-seconds

如果您没有在请求中指定 WaitTimeSeconds,则队列属性 ReceiveMessageWaitTimeSeconds 用于确定要等待的时长。

 

整数

camel.component.aws-sqs.configuration.redrive-policy

指定向 DeadLetter 队列发送消息的策略。请参阅 Amazon 文档。

 

字符串

camel.component.aws-sqs.configuration.region

指定可与 queueOwnerAWSAccountId 一起使用的队列区域,以构建服务 URL。

 

字符串

camel.component.aws-sqs.configuration.secret-key

Amazon AWS Secret Key

 

字符串

camel.component.aws-sqs.configuration.visibility-timeout

在由 ReceiveMessage 请求在 com.amazonaws.services.sqs.model.SetQueueAttributesRequest 中检索后,接收的消息从后续检索请求中隐藏的时间(以秒为单位)。这只在它与 defaultVisibilityTimeout 不同时才有意义。它永久更改队列可见性超时属性。

 

整数

camel.component.aws-sqs.configuration.wait-time-seconds

ReceiveMessage action 调用将等待持续持续一个消息以包含在响应中的持续时间(以秒为单位)(0 到 20)。

 

整数

camel.component.aws-sqs.enabled

启用 aws-sqs 组件

true

布尔值

camel.component.aws-sqs.region

指定可与 queueOwnerAWSAccountId 一起使用的队列区域,以构建服务 URL。

 

字符串

camel.component.aws-sqs.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.aws-sqs.secret-key

Amazon AWS Secret Key

 

字符串

所需的 SQS 组件选项

您必须提供 Registry 中的 amazonSQSClient 或您的 accessKey 和 secretKey 以访问 Amazon 的 SQS

35.4. 批处理消费者

此组件实施 Batch Consumer。

这样,您可以让实例知道此批处理中有多少消息,而实例可让聚合器聚合这个数量的消息。

35.5. 使用

35.5.1. SQS producer 设置的消息标头

Expand
标头类型描述

CamelAwsSqsMD5OfBody

字符串

Amazon SQS 消息的 MD5 校验和。

CamelAwsSqsMessageId

字符串

Amazon SQS 消息 ID。

CamelAwsSqsDelaySeconds

整数

Camel 2.11 起,Amazon SQS 消息可以被其他人看到的延迟秒数。

35.5.2. SQS 消费者设置的消息标头

Expand
标头类型描述

CamelAwsSqsMD5OfBody

字符串

Amazon SQS 消息的 MD5 校验和。

CamelAwsSqsMessageId

字符串

Amazon SQS 消息 ID。

CamelAwsSqsReceiptHandle

字符串

Amazon SQS 消息接收处理。

CamelAwsSqsMessageAttributes

Map<String, String>

Amazon SQS 消息属性。

35.5.3. 高级 AmazonSQS 配置

如果您的 Camel 应用程序正在防火墙后面运行,或者您需要对 AmazonSQS 实例配置进行更多控制,您可以创建自己的实例:

AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");

ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);

AmazonSQS client = new AmazonSQSClient(awsCredentials, clientConfiguration);

registry.bind("client", client);
Copy to Clipboard Toggle word wrap

并在您的 Camel aws-sqs 组件配置中引用它:

from("aws-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");
Copy to Clipboard Toggle word wrap

35.5.4. 创建或更新 SQS Queue

在 SQS 组件中,当端点启动时,会执行检查来获取队列存在性的信息。您可以使用 SQSConfiguration 选项通过 QueueAttributeName 映射自定义创建。

from("aws-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");
Copy to Clipboard Toggle word wrap

在本例中,如果 AWS 上尚未创建 MyQueue 队列,它将使用 SQS 配置中的默认参数创建。如果已在 AWS 上,将使用 SQS 配置选项来覆盖现有的 AWS 配置。

35.5.5. DelayQueue VS Delay 用于单一消息

从 2.23.0,组件具有一个新的选项: delayQueue。当 选项设为 true 时,SQS Queue 将是一个 DelayQueue,其值为 DelaySeconds 选项,作为延迟。如需有关 DelayQueue 的更多信息,您可以阅读 AWS SQS 文档。要考虑的一个重要信息,如下所示:

  • 对于标准队列,按队列延迟设置不会恢复设置,不会影响队列中已存在消息的延迟。
  • 对于 FIFO 队列,每个队列延迟设置都会改变设置,影响队列中已有的消息的延迟。

如官方文档中所述。如果要指定单个消息上的延迟,可以忽略 delayQueue 选项,而您可以将这个选项设置为 true,如果您需要在所有消息 enqueued 中添加一个固定延迟。

35.6. 依赖项

Maven 用户需要将以下依赖项添加到其 pom.xml 中。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.6 或更高版本)。

35.7. JMS-style Selector

SQS 不允许选择器,但您可以使用 Camel Filter EIP 和设置适当的 可见Timeout 来有效地达到此目的。当 SQS 分配消息时,它将等待到可见性超时,然后尝试将消息发送到不同的消费者,除非收到 DeleteMessage。默认情况下,Camel 总是在路由末尾发送 DeleteMessage,除非路由以失败告终。要实现适当的过滤,而不在成功完成路由时发送 DeleteMessage,请使用 Filter:

from("aws-sqs://MyQueue?amazonSQSClient=#client&defaultVisibilityTimeout=5000&deleteIfFiltered=false")
.filter("${header.login} == true")
.to("mock:result");
Copy to Clipboard Toggle word wrap

在上面的代码中,如果交换没有适当的标头,它不会通过过滤器使其不会从 SQS 队列中删除。在 5000 miliseconds 后,信息将对其他消费者可见。

35.8. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • AWS 组件

第 36 章 AWS Simple Workflow 组件

作为 Camel 版本 2.13 可用

简单工作流组件支持从 Amazon 简单工作流服务 管理工作流。

前提条件

您必须有有效的 Amazon Web Services 开发人员帐户,并且必须注册以使用 Amazon Simple Workflow。如需更多信息,请参阅 Amazon Simple Workflow

36.1. URI 格式

aws-swf://<workflow|activity>[?options]
Copy to Clipboard Toggle word wrap

您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…​

36.2. URI 选项

AWS Simple Workflow 组件支持 5 选项,这些选项如下。

Expand
名称描述默认类型

配置 (高级)

AWS SWF 默认配置

 

SWFConfiguration

accessKey (common)

Amazon AWS 访问密钥.

 

字符串

secretKey (common)

Amazon AWS Secret 密钥。

 

字符串

region (common)

Amazon AWS 区域。

 

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

AWS Simple Workflow 端点使用 URI 语法配置:

aws-swf:type
Copy to Clipboard Toggle word wrap

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

36.2.1. 路径名(1 参数):

Expand
名称描述默认类型

type

所需的 活动或工作流

 

字符串

36.2.2. 查询参数(30 参数):

Expand
名称描述默认类型

amazonSWClient (common)

使用给定的 AmazonSimpleWorkflowClient 作为客户端

 

AmazonSimpleWorkflow Client

dataConverter (common)

一个 com.amazonaws.services.simpleworkflow.flow.DataConverter 实例,以用于对数据进行序列化/反序列化。

 

DataConverter

domainName (common)

要使用的工作流域。

 

字符串

eventName (common)

要使用的工作流或活动事件名称。

 

字符串

region (common)

Amazon AWS 区域。

 

字符串

版本 (通用)

要使用的工作流或活动事件版本。

 

字符串

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

ClientConfiguration 参数 (advanced)

使用 map 中的键/值配置 ClientConfiguration。

 

map

startWorkflowOptions Parameters (advanced)

使用 Map 中的键/值配置 StartWorkflowOptions。

 

map

sWClientParameters (advanced)

使用 map 中的键/值配置 AmazonSimpleWorkflowClient。

 

map

同步 (高级)

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

false

布尔值

activityList (activity)

用于消耗活动的列表名称。

 

字符串

activitySchedulingOptions (activity)

活动调度选项

 

ActivityScheduling 选项

activityThreadPoolSize (activity)

工作池中用于活动的最大线程数。

100

int

activityTypeExecution Options (activity)

活动执行选项

 

ActivityTypeExecution Options

activityTypeRegistration Options (activity)

活动注册选项

 

ActivityType RegistrationOptions

childPolicy (workflow)

终止工作流时要用于子工作流的策略。

 

字符串

executionStartToClose Timeout (workflow)

将执行开始设置为关闭超时。

3600

字符串

操作 (工作流)

工作流操作

开始

字符串

signalName (workflow)

要发送到工作流的信号名称。

 

字符串

stateResultType (workflow)

查询工作流状态时的结果类型。

 

字符串

taskStartToCloseTimeout (workflow)

将任务 start 设置为关闭超时。

600

字符串

terminationDetails (workflow)

终止工作流的详情。

 

字符串

terminationReason (workflow)

终止工作流的原因。

 

字符串

workflowList (workflow)

用于消耗工作流的列表名称。

 

字符串

workflowTypeRegistration Options (workflow)

工作流注册选项

 

WorkflowType RegistrationOptions

accesskey (安全性)

Amazon AWS 访问密钥.

 

字符串

secretKey (security)

Amazon AWS Secret 密钥。

 

字符串

36.3. Spring Boot Auto-Configuration

组件支持 32 个选项,如下所示。

Expand
名称描述默认类型

camel.component.aws-swf.access-key

Amazon AWS 访问密钥.

 

字符串

camel.component.aws-swf.configuration.access-key

Amazon AWS 访问密钥.

 

字符串

camel.component.aws-swf.configuration.activity-list

用于消耗活动的列表名称。

 

字符串

camel.component.aws-swf.configuration.activity-scheduling-options

活动调度选项

 

ActivityScheduling 选项

camel.component.aws-swf.configuration.activity-thread-pool-size

工作池中用于活动的最大线程数。

100

整数

camel.component.aws-swf.configuration.activity-type-execution-options

活动执行选项

 

ActivityTypeExecution Options

camel.component.aws-swf.configuration.activity-type-registration-options

活动注册选项

 

ActivityType RegistrationOptions

camel.component.aws-swf.configuration.amazon-s-w-client

使用给定的 AmazonSimpleWorkflowClient 作为客户端

 

AmazonSimpleWorkflow Client

camel.component.aws-swf.configuration.child-policy

终止工作流时要用于子工作流的策略。

 

字符串

camel.component.aws-swf.configuration.client-configuration-parameters

使用 map 中的键/值配置 ClientConfiguration。

 

map

camel.component.aws-swf.configuration.data-converter

一个 com.amazonaws.services.simpleworkflow.flow.DataConverter 实例,以用于对数据进行序列化/反序列化。

 

DataConverter

camel.component.aws-swf.configuration.domain-name

要使用的工作流域。

 

字符串

camel.component.aws-swf.configuration.event-name

要使用的工作流或活动事件名称。

 

字符串

camel.component.aws-swf.configuration.execution-start-to-close-timeout

将执行开始设置为关闭超时。

3600

字符串

camel.component.aws-swf.configuration.operation

工作流操作

开始

字符串

camel.component.aws-swf.configuration.region

Amazon AWS 区域。

 

字符串

camel.component.aws-swf.configuration.s-w-client-parameters

使用 map 中的键/值配置 AmazonSimpleWorkflowClient。

 

map

camel.component.aws-swf.configuration.secret-key

Amazon AWS Secret 密钥。

 

字符串

camel.component.aws-swf.configuration.signal-name

要发送到工作流的信号名称。

 

字符串

camel.component.aws-swf.configuration.start-workflow-options-parameters

使用 Map 中的键/值配置 StartWorkflowOptions。

 

map

camel.component.aws-swf.configuration.state-result-type

查询工作流状态时的结果类型。

 

字符串

camel.component.aws-swf.configuration.task-start-to-close-timeout

将任务 start 设置为关闭超时。

600

字符串

camel.component.aws-swf.configuration.termination-details

终止工作流的详情。

 

字符串

camel.component.aws-swf.configuration.termination-reason

终止工作流的原因。

 

字符串

camel.component.aws-swf.configuration.type

活动或工作流

 

字符串

camel.component.aws-swf.configuration.version

要使用的工作流或活动事件版本。

 

字符串

camel.component.aws-swf.configuration.workflow-list

用于消耗工作流的列表名称。

 

字符串

camel.component.aws-swf.configuration.workflow-type-registration-options

工作流注册选项

 

WorkflowType RegistrationOptions

camel.component.aws-swf.enabled

启用 aws-swf 组件

true

布尔值

camel.component.aws-swf.region

Amazon AWS 区域。

 

字符串

camel.component.aws-swf.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.aws-swf.secret-key

Amazon AWS Secret 密钥。

 

字符串

所需的 SWF 组件选项

您必须在 Registry 或 accessKey 和 secretKey 中提供 amazonSWClient,才能访问 Amazon 的 Simple Workflow Service

36.4. 使用

36.4.1. SWF Workflow Producer 评估的消息标头

工作流程制作者允许与工作流交互。它可以启动新的工作流执行,查询其状态,向正在运行的工作流发送信号,或者终止和取消它。

Expand
标头类型描述

CamelSWFOperation

字符串

对工作流执行的操作。支持的操作有:
SIGNAL, CANCEL, TERMINATE, GET_STATE, START, DESCRIBE, GET_HISTORY。

CamelSWFWorkflowId

字符串

要使用的工作流 ID。

CamelAwsDdbKeyCamelSWFRunId

字符串

要使用的 worfklow 运行 ID。

CamelSWFStateResultType

字符串

查询工作流状态时的结果类型。

CamelSWFEventName

字符串

要使用的工作流或活动事件名称。

CamelSWFVersion

字符串

要使用的工作流或活动事件版本。

CamelSWFReason

字符串

终止工作流的原因。

CamelSWFDetails

字符串

终止工作流的详情。

CamelSWFChildPolicy

字符串

终止工作流时要用于子工作流的策略。

36.4.2. SWF Workflow Producer 设置的消息标头

Expand
标头类型描述

CamelSWFWorkflowId

字符串

使用的 worfklow 或新生成的 ID。

CamelAwsDdbKeyCamelSWFRunId

字符串

worfklow 运行 ID 已使用或生成。

36.4.3. 由 SWF Workflow Consumer 设置的消息标头

工作流使用者表示工作流逻辑。启动之后,它将开始轮询工作流决策任务并进行处理。除了处理决策任务外,工作流使用者路由还会接收信号(从工作流制作者结束)或状态查询。工作流消费者的主要目的是使用活动制作者安排活动任务以进行执行。实际活动任务只能从工作流消费者启动的线程调度。

Expand
标头类型描述

CamelSWFAction

字符串

指明什么是当前事件:CamelSWFActionExecute、CamelSWFSignalReceivedAction 或 CamelSWFGetStateAction。

CamelSWFWorkflowReplaying

布尔值

指明当前的决策任务是重播的。

CamelSWFWorkflowStartTime

long

此决策任务的开始事件的时间。

36.4.4. SWF Activity Producer 设置的消息标头

活动制作者允许调度活动任务。活动制作者只能从工作流消费者开启的线程使用,它可以处理由工作流使用者启动的同步交换。

Expand
标头类型描述

CamelSWFEventName

字符串

要调度的活动名称。

CamelSWFVersion

字符串

要调度的活动版本。

36.4.5. SWF Activity Consumer 设置的消息标头

Expand
标头类型描述

CamelSWFTaskToken

字符串

报告手动完成任务完成的任务令牌。

36.4.6. 高级 amazonSWClient 配置

如果您需要更多对 AmazonSimpleWorkflowClient 实例配置进行更多的控制,您可以创建自己的实例并从 URI 引用它:

#client 指的是 registry 中的 AmazonSimpleWorkflowClient。

例如,如果您的 Camel 应用程序是在防火墙后面运行:

AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);

AmazonSimpleWorkflowClient client = new AmazonSimpleWorkflowClient(awsCredentials, clientConfiguration);

registry.bind("client", client);
Copy to Clipboard Toggle word wrap

36.5. 依赖项

Maven 用户需要将以下依赖项添加到其 pom.xml 中。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.13 或更高版本)。

36.6. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用

AWS 组件

第 37 章 AWS XRay Component

可作为 Camel 2.21 可用

camel-aws-xray 组件用于使用 AWS XRay 跟踪和计时传入的 Camel 消息。

事件(subsegments)会捕获用于传入和传出消息。

37.1. 依赖项

要将 AWS XRay 支持纳入 Camel 中,需要向项目添加包含 Camel 相关的 AWS XRay 相关类的存档。另外,还需要提供 AWS XRay 库。

要包括 AWS XRay 和 Camel,依赖项使用以下 Maven 导入:

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-xray-recorder-sdk-bom</artifactId>
        <version>1.3.1</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
      <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-aws-xray</artifactId>
      </dependency>

      <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-xray-recorder-sdk-core</artifactId>
      </dependency>
      <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-xray-recorder-sdk-aws-sdk</artifactId>
      </dependency>
  <dependencies>
Copy to Clipboard Toggle word wrap

37.2. 配置

AWS XRay tracer 的配置属性是:

Expand
选项默认值描述

addExcludePatterns

 

设置 exclude 模式,它将为与 模式匹配的 Camel 消息禁用追踪。内容是一个 Set<String>,其中密钥是匹配的 routeId。该模式使用来自 Intercept 的规则。

setTracingStrategy

NoopTracingStrategy

可以提供自定义 Camel InterceptStrategy 来跟踪 BeanDefinitionProcessDefinition 等调用的处理器定义。TraceAnnotatedTracingStrategy 将跟踪通过 .bean (…​).process (…​) 调用的所有类,并在类级别包含 @XRayTrace 注解。

目前,只有 AWS XRay tracer 可以配置为为 Camel 应用程序提供分布式追踪:

37.2.1. explicit

在您的 POM 中包含 camel-aws-xray 组件,以及与 AWS XRay Tracer 相关的任何特定依赖项。

要明确配置 AWS XRay 支持,实例化 XRayTracer 并初始化 camel 上下文。您可以选择指定一个 Tracer,或使用 RegistryServiceLoader 隐式发现它。

XRayTracer xrayTracer = new XRayTracer();
// By default it uses a NoopTracingStrategy, but you can override it with a specific InterceptStrategy implementation.
xrayTracer.setTracingStrategy(...);
// And then initialize the context
xrayTracer.init(camelContext);
Copy to Clipboard Toggle word wrap

要在 XML 中使用 XRayTracer,所有您需要做的就是定义 AWS XRay tracer bean。Camel 将自动发现并使用它。

  <bean id="tracingStrategy" class="..."/>
  <bean id="aws-xray-tracer" class="org.apache.camel.component.aws.xray.XRayTracer" />
    <property name="tracer" ref="tracingStrategy"/>
  </bean>
Copy to Clipboard Toggle word wrap

如果默认 NoopTracingStrategy 只跟踪并删除交换,则不会调用某些 Bean 或 EIP 模式。

37.2.2. 跟踪综合路由执行

为了跟踪多个路由间交换的执行,当创建唯一追踪 ID 时,则会在标头中生成并存储在标头中(如果还没有对应的值可用)。此 trace ID 被复制到新的交换,以保持已处理交换的一致性视图。

因为 AWS XRay trace 可以在本地工作,当前子/segment 应该复制到新线程,并在 AWS XRay 文档中 设置。因此,Camel AWS XRay 组件提供了一个额外的标头字段,组件将使用该字段将传递的 AWS XRay Entity 设置为新线程,从而使跟踪的数据保持在路由中,而不是公开与任何执行路由无关的新片段。

组件将使用在交换标题中找到的以下常量:

Expand
标头描述

Camel-AWS-XRay-Trace-ID

包含对 AWS XRay TraceID 对象的引用,以提供调用路由的综合视图

Camel-AWS-XRay-Trace-Entity

包含到复制到新线程的实际 AWS XRay SegmentSubsegment 的引用。如果生成新线程,且执行的任务应作为执行路由的一部分公开,则应该设置此标头,而不是创建一个新的不相关的片段。

请注意,AWS XRay Entity (即 SegmentSubsegment)不序列化,因此不应传递给其他 JVM 进程。

37.3. 示例

您可以找到一个演示在此项目附带的测试中配置 AWS XRay 追踪方法示例。

第 38 章 Windows Azure 服务的 Camel 组件

Windows Azure 服务的 Camel 组件提供来自 Camel 的 Azure 服务的连接。

 

Expand
Azure ServiceCamel 组件Camel 版本组件描述

Storage Blob Service

Azure-Blob

2.9.0

支持存储和检索 Blob

存储队列服务

Azure-Queue

2.9.0

支持在队列中存储和检索消息

第 39 章 Azure Storage Blob Service Component

作为 Camel 版本 2.19 可用

Azure Blob 组件支持从 Azure Storage Blob 服务存储和检索 Blob。

前提条件

您必须具有有效的 Windows Azure Storage 帐户。如需更多信息,请参阅 Azure 文档门户

39.1. URI 格式

azure-blob://accountName/containerName[/blobName][?options]
Copy to Clipboard Toggle word wrap

在大多数情况下,需要 blobName,如果不存在,则会创建 blob。
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…​

例如,要从位于 camelazure 存储帐户上的 container1 中的公共块 blob blockBlob 下载 blob 内容,请使用以下代码片段:

from("azure-blob:/camelazure/container1/blockBlob").
to("file://blobdirectory");
Copy to Clipboard Toggle word wrap

39.2. URI 选项

Azure Storage Blob Service 组件没有选项。

Azure Storage Blob Service 端点使用 URI 语法进行配置:

azure-blob:containerOrBlobUri
Copy to Clipboard Toggle word wrap

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

39.2.1. 路径名(1 参数):

Expand
名称描述默认类型

containerOrBlobUri

所需的 Container 或 Blob compact Uri

 

字符串

39.2.2. 查询参数(19 参数):

Expand
名称描述默认类型

azureBlobClient (common)

blob 服务客户端

 

CloudBlob

blobOffset (common)

为上传或下载操作设置 blob 偏移,默认为 0

0

Long

blobType (common)

设置 blob 类型,'blockblob' 是 default

blockblob

BlobType

closeStreamAfterRead (common)

读取或保持打开后流关闭,默认为 true

true

布尔值

credentials (common)

设置存储凭证,在大多数情况下需要

 

StorageCredentials

dataLength (common)

为下载或页面 blob 上传操作设置数据长度

 

Long

fileDir (common)

将下载的 Blob 保存到的文件和目录

 

字符串

publicForRead (common)

如果启用此属性,则存储资源可以公开读取其内容,那么不必设置凭证

false

布尔值

streamReadSize (common)

读取 blob 内容时,设置最小读取大小(以字节为单位)

 

int

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

blobMetadata (producer)

设置 blob meta-data

 

map

blobPrefix (producer)

设置可用于列出 Blob 的前缀

 

字符串

closeStreamAfterWrite (producer)

在写入或保留流后关闭流,默认为 true

true

布尔值

operation (producer)

blob 服务操作提示到制作者

listBlobs

BlobServiceOperations

streamWriteSize (producer)

设置写入块和页面块的缓冲大小

 

int

useFlatListing (producer)

指定是否应使用扁平或分级 blob 列表

true

布尔值

同步 (高级)

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

false

布尔值

39.3. Spring Boot Auto-Configuration

组件支持 2 个选项,如下所示。

Expand
名称描述默认类型

camel.component.azure-blob.enabled

启用 azure-blob 组件

true

布尔值

camel.component.azure-blob.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

所需的 Azure Storage Blob Service 组件选项

如果需要访问私有 Blob,则必须提供 containerOrBlob 名称和凭证。

39.4. 使用

Expand
标头类型描述
   
Expand
标头类型描述

CamelFileName

字符串

下载的 blob 内容的文件名。

Expand
标头类型描述

CamelFileName

字符串

下载的 blob 内容的文件名。

39.4.4. Azure Blob Service 操作

适用于所有块类型的操作

Expand
操作描述

getBlob

获取 blob 的内容。您可以将此操作的输出限制为 blob 范围。

deleteBlob

删除 blob。

listBlobs

列出 blob。

Block blob 操作

Expand
操作描述

updateBlockBlob

放置块 blob 内容,以创建新块 blob 或覆盖现有的块 blob 内容。

uploadBlobBlocks

上传块 blob 内容,首先生成 blob 块序列,然后将其提交到 blob。如果启用消息 CommitBlockListLater 属性,您可以稍后使用 commitBlobBlockList 操作来执行提交。之后,您可以更新单独的块 blob。

commitBlobBlockList

将一系列 blob 块提交到您之前上传到 blob 服务的块列表(使用启用了消息 CommitBlockBlob 的 updateBlock Blob 操作)。

getBlobBlockList

获取块 blob 列表。

附加 blob 操作

Expand
操作描述

createAppendBlob

创建 append 块。默认情况下,如果块已存在,则不会重置。请注意,您还可以通过启用消息 AppendBlobCreated 属性并使用 updateAppendBlob 操作来创建 append blob。

updateAppendBlob

将新内容附加到 blob。如果不存在,且您启用了 AppendBlobCreated 属性,则此操作也会创建 blob。

页面块操作

Expand
操作描述

createPageBlob

创建页面块。默认情况下,如果块已存在,则不会重置。请注意,也可以通过启用消息 PageBlobCreated 属性并使用 updatePageBlob 操作来创建页面 blob (及其内容)。

updatePageBlob

创建一个页面块(除非您启用了消息 PageBlobCreated 属性和相同名称块)并设置这个 blob 的内容。

resizePageBlob

调整 page blob 的大小。

clearPageBlob

清除 page blob。

getPageBlobRanges

获取 page blob 页面范围。

39.4.5. Azure Blob 客户端配置

如果您的 Camel 应用程序是在防火墙后面运行,或者您需要对 Azure Blob 客户端配置有更多的控制,您可以创建您自己的实例:

StorageCredentials credentials = new StorageCredentialsAccountAndKey("camelazure", "thekey");

CloudBlob client = new CloudBlob("camelazure", credentials);

registry.bind("azureBlobClient", client);
Copy to Clipboard Toggle word wrap

并在 Camel azure-blob 组件配置中引用它:

from("azure-blob:/camelazure/container1/blockBlob?azureBlobClient=#client")
.to("mock:result");
Copy to Clipboard Toggle word wrap

39.5. 依赖项

Maven 用户需要将以下依赖项添加到其 pom.xml 中。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-azure</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.19.0 或更高版本)。

39.6. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • Azure Component

第 40 章 Azure Storage Queue Service 组件

作为 Camel 版本 2.19 可用

Azure Queue 组件支持存储和检索消息到 Azure Storage Queue 服务。

前提条件

您必须具有有效的 Microsoft Azure 帐户。如需更多信息,请访问 Azure Portal

40.1. URI 格式

azure-queue://accountName/queueName[?options]
Copy to Clipboard Toggle word wrap

如果队列尚不存在,则会创建队列。
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…​

例如,若要从 camelazure 存储帐户中的队列 messageQueue 获取消息内容,并使用以下代码片段:

from("azure-queue:/camelazure/messageQueue").
to("file://queuedirectory");
Copy to Clipboard Toggle word wrap

40.2. URI 选项

Azure Storage Queue Service 组件没有选项。

Azure Storage Queue Service 端点使用 URI 语法进行配置:

azure-queue:containerAndQueueUri
Copy to Clipboard Toggle word wrap

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

40.2.1. 路径名(1 参数):

Expand
名称描述默认类型

containerAndQueueUri

所需的 容器队列紧凑 Uri

 

字符串

40.2.2. 查询参数(10 参数):

Expand
名称描述默认类型

azureQueueClient (common)

队列服务客户端

 

CloudQueue

credentials (common)

设置存储凭证,在大多数情况下需要

 

StorageCredentials

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

messageTimeToLive (producer)

消息时间(以秒为单位)

 

int

messageVisibilityDelay (producer)

Message Visibility Delay (以秒为单位)

 

int

operation (producer)

将服务操作提示排队到制作者

listQueues

QueueServiceOperations

queuePrefix (producer)

设置可用于列出队列的前缀

 

字符串

同步 (高级)

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

false

布尔值

40.3. Spring Boot Auto-Configuration

组件支持 2 个选项,如下所示。

Expand
名称描述默认类型

camel.component.azure-queue.enabled

启用 azure-queue 组件

true

布尔值

camel.component.azure-queue.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

所需的 Azure Storage Queue Service 组件选项

您必须提供 containerAndQueue URI 和凭证。

40.4. 使用

Expand
标头类型描述
   
Expand
标头类型描述
   
Expand
标头类型描述
   

40.4.4. Azure Queue Service 操作

Expand
操作描述

listQueues

列出队列。

createQueue

创建队列。

deleteQueue

删除队列。

addMessage

向队列添加消息。

retrieveMessage

从队列检索消息。

peekMessage

查看队列中的消息,例如,确定消息是否到达正确的队列。

updateMessage

更新队列中的消息。

deleteMessage

删除队列中的消息。

40.4.5. Azure Queue Client 配置

如果您的 Camel 应用程序是在防火墙后面运行,或者您需要对 Azure Queue Client 配置有更多的控制,您可以创建您自己的实例:

StorageCredentials credentials = new StorageCredentialsAccountAndKey("camelazure", "thekey");

CloudQueue client = new CloudQueue("camelazure", credentials);

registry.bind("azureQueueClient", client);
Copy to Clipboard Toggle word wrap

并在 Camel azure-queue 组件配置中引用它:

from("azure-queue:/camelazure/messageQueue?azureQueueClient=#client")
.to("mock:result");
Copy to Clipboard Toggle word wrap

40.5. 依赖项

Maven 用户需要将以下依赖项添加到其 pom.xml 中。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-azure</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.19.0 或更高版本)。

40.6. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • Azure Component

第 41 章 Barcode DataFormat

作为 Camel 版本 2.14 可用

条形数据格式基于 zxing 库。此组件的目标是从字符串(marshal)和 barcode 镜像(unmarshal)创建 barcode 镜像。您可以自由选择使用 zxing 提供的所有功能。

41.1. 依赖项

要使用 camel 路由的 barcode 数据格式,您需要添加实现此数据格式的 camel-barcode 依赖项。

如果您使用 maven,只需在 pom.xml 中添加以下内容,替换最新和最高版本的版本号(请参阅最新版本的下载页面)。

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-barcode</artifactId>
  <version>x.x.x</version>
</dependency>
Copy to Clipboard Toggle word wrap

41.2. Barcode 选项

Barcode 数据格式支持 5 个选项,它们如下。

Expand
名称默认Java 类型描述

width

 

整数

barcode 的宽度

height

 

整数

barcode 高度

imageType

 

字符串

barcode 的镜像类型,如 png

barcodeFormat

 

字符串

Barcode 格式,如 QR-Code

contentTypeHeader

false

布尔值

如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。

41.3. Spring Boot Auto-Configuration

组件支持 6 个选项,它们如下所列。

Expand
名称描述默认类型

camel.dataformat.barcode.barcode-format

Barcode 格式,如 QR-Code

 

字符串

camel.dataformat.barcode.content-type-header

如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。

false

布尔值

camel.dataformat.barcode.enabled

启用 barcode 数据格式

true

布尔值

camel.dataformat.barcode.height

barcode 高度

 

整数

camel.dataformat.barcode.image-type

barcode 的镜像类型,如 png

 

字符串

camel.dataformat.barcode.width

barcode 的宽度

 

整数

ND

41.4. 使用 Java DSL

首先,您必须初始化 barcode 数据 fomat 类。您可以使用默认构造器或参数化之一(请参阅 JavaDoc)。默认值为:

Expand
参数默认值

image type (BarcodeImageType)

PNG

width

100 px

height

100 px

encoding

UTF-8

Barcode 格式(BarcodeFormat)

QR-Code

// QR-Code default
DataFormat code = new BarcodeDataFormat();
Copy to Clipboard Toggle word wrap

如果要使用 zxing hints,您可以使用 BarcodeDataFormat 实例的 'addToHintMap' 方法:

code.addToHintMap(DecodeHintType.TRY_HARDER, Boolean.true);
Copy to Clipboard Toggle word wrap

有关可能的提示信息,请参阅 xzing 文档。

41.4.1. marshalling

from("direct://code")
  .marshal(code)
  .to("file://barcode_out");
Copy to Clipboard Toggle word wrap

您可以使用以下测试类调用路由:

template.sendBody("direct://code", "This is a testmessage!");
Copy to Clipboard Toggle word wrap

您应该在该镜像的 'barcode_out' 文件夹中找到:

image

41.4.2. unmarshalling

unmarshaller 是通用的。要取消总结,您可以使用任何 BarcodeDataFormat 实例。如果您有两个实例,一个用于(重新生成)QR-Code,另一个用于 PDF417,这无关紧要。

from("file://barcode_in?noop=true")
  .unmarshal(code) // for unmarshalling, the instance doesn't matter
  .to("mock:out");
Copy to Clipboard Toggle word wrap

如果将上述 QR-Code 镜像粘贴到"barcode_in"文件夹中,您应该找到此 为测试消息!您可以作为标头变量查找 barcode 数据格式:

Expand
名称类型描述

BarcodeFormat

字符串

com.google.zxing.BarcodeFormat 的值。

 

 

第 42 章 Base64 DataFormat

作为 Camel 2.11 版本提供

Base64 数据格式用于 base64 编码和解码。

42.1. 选项

Base64 数据格式支持 4 个选项,它们如下。

Expand
名称默认Java 类型描述

lineLength

76

整数

对编码数据的具体最大行长度。默认情况下使用 76。

lineSeparator

 

字符串

要使用的行分隔符。默认使用新行字符(CRLF)。

urlSafe

false

布尔值

不必将 '' 和 '/' 分别发出 '-' 和 '_'。urlSafe 只应用于编码操作。解码同时处理这两种模式。默认为 false。

contentTypeHeader

false

布尔值

如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。

42.2. Spring Boot Auto-Configuration

组件支持 5 个选项,它们如下所列。

Expand
名称描述默认类型

camel.dataformat.base64.content-type-header

如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。

false

布尔值

camel.dataformat.base64.enabled

启用 base64 数据格式

true

布尔值

camel.dataformat.base64.line-length

对编码数据的具体最大行长度。默认情况下使用 76。

76

整数

camel.dataformat.base64.line-separator

要使用的行分隔符。默认使用新行字符(CRLF)。

 

字符串

camel.dataformat.base64.url-safe

不必将 '' 和 '/' 分别发出 '-' 和 '_'。urlSafe 只应用于编码操作。解码同时处理这两种模式。默认为 false。

false

布尔值

ND

在 Spring DSL 中,您可以使用该标签配置数据格式:

<camelContext>
    <dataFormats>
        <!-- for a newline character (\n), use the HTML entity notation coupled with the ASCII code. -->
        <base64 lineSeparator="&#10;" id="base64withNewLine" />
        <base64 lineLength="64" id="base64withLineLength64" />
    </dataFormats>
    ...
</camelContext>
Copy to Clipboard Toggle word wrap

之后,您可以参考它:

<route>
     <from uri="direct:startEncode" />
     <marshal ref="base64withLineLength64" />
     <to uri="mock:result" />
</route>
Copy to Clipboard Toggle word wrap

大多数时候,如果您使用默认选项,则不需要声明数据格式。在这种情况下,您可以声明内联数据格式,如下所示。

42.3. marshal

在本例中,我们将文件内容分到 base64 对象。

from("file://data.bin")
    .marshal().base64()
    .to("jms://myqueue");
Copy to Clipboard Toggle word wrap

在 Spring DSL 中:

 <from uri="file://data.bin">
 <marshal>
     <base64/>
 </marshal>
 <to uri="jms://myqueue"/>
Copy to Clipboard Toggle word wrap

42.4. unmarshal

在本例中,我们在由 newOrder 处理器处理前,将来自 JMS 队列的有效负载分到字节[] 对象。

from("jms://queue/order")
    .unmarshal().base64()
    .process("newOrder");
Copy to Clipboard Toggle word wrap

在 Spring DSL 中:

 <from uri="jms://queue/order">
 <unmarshal>
     <base64/>
 </unmarshal>
 <to uri="bean:newOrder"/>
Copy to Clipboard Toggle word wrap

42.5. 依赖项

要在 Camel 路由中使用 Base64,您需要添加实现此数据格式的 camel-base64 的依赖项。

如果使用 Maven,则只需在 pom.xml 中添加以下内容:

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-base64</artifactId>
  <version>x.x.x</version>  <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

第 43 章 Bean 组件

作为 Camel 版本 1.0 可用

bean: 组件将 Bean 绑定到 Camel 消息交换。

43.1. URI 格式

bean:beanName[?options]
Copy to Clipboard Toggle word wrap

其中 beanID 可以是用于在 Registry 中查找 bean 的任何字符串

43.2. 选项

Bean 组件支持 2 个选项,它们如下所列。

Expand
名称描述默认类型

cache (advanced)

如果启用,Camel 将缓存第一个 Registry 查找的结果。如果 registry 中的 bean 定义为单例范围,则可以启用缓存。

 

布尔值

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

Bean 端点使用 URI 语法配置:

bean:beanName
Copy to Clipboard Toggle word wrap

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

43.2.1. 路径名(1 参数):

Expand
名称描述默认类型

beanName

必需 设置要调用的 bean 的名称

 

字符串

43.2.2. 查询参数(5 参数):

Expand
名称描述默认类型

方法 (生成器)

设置在 bean 上调用的方法的名称

 

字符串

cache (advanced)

如果启用,Camel 将缓存第一个 Registry 查找的结果。如果 registry 中的 bean 定义为单例范围,则可以启用缓存。

 

布尔值

multiParameterArray (advanced)

弃用了 如何处理从消息正文传递的参数;如果为 true,则消息正文应该是参数的数组。注:此选项由 Camel 内部使用,它不适用于最终用户。弃用备注:此选项由 Camel 内部使用,且不适用于最终用户。

false

布尔值

参数 (高级)

用于配置 bean 中的其他属性

 

map

同步 (高级)

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

false

布尔值

您可以使用以下格式在 URI 中附加查询选项 ?option=value&option=value&…​

43.3. 使用

用于消耗消息的对象实例必须使用 Registry 明确注册。例如,如果您使用 Spring,则必须在 Spring 配置 spring.xml 中定义 bean;或者,如果您不使用 Spring,请通过在 JNDI 中注册 bean 来定义 bean。

格式化宏错误: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20

注册端点后,您可以构建 Camel 路由来处理交换。

bean: 端点不能定义为对路由的输入;即,您无法从某些入站消息端点路由到 bean 端点,作为输出。因此,请考虑使用 直接:队列: 端点作为输入。

您可以使用 ProxyHelper 上的 createProxy () 方法创建一个代理,该代理将生成 BeanExchanges 并将其发送到任何端点:

以及使用 Spring DSL 相同的路由:

<route>
   <from uri="direct:hello">
   <to uri="bean:bye"/>
</route>
Copy to Clipboard Toggle word wrap

43.4. Bean 作为端点

Camel 还支持调用 Bean 作为端点。在以下路由中:

情况是,当交换路由到 myBean Camel 时,将使用 Bean Binding 调用 bean。
bean 的源只是普通 POJO:

Camel 将使用 Bean Binding 来调用 sayHello 方法,通过将 Exchange 的 In body 转换为 String 类型,并将方法的输出存储在 Exchange Out 正文中。

43.5. Java DSL Bean 语法

Java DSL 为 Bean 组件提供 syntactic sugar。您可以使用下列语法,而不明确指定 bean 作为端点(例如 to ("bean:beanName")

// Send message to the bean endpoint
// and invoke method resolved using Bean Binding.
from("direct:start").beanRef("beanName");

// Send message to the bean endpoint
// and invoke given method.
from("direct:start").beanRef("beanName", "methodName");
Copy to Clipboard Toggle word wrap

您可以指定 bean 本身,而不传递对 bean 的引用名称(这样 Camel 将会在 registry 中查找该文件):

// Send message to the given bean instance.
from("direct:start").bean(new ExampleBean());

// Explicit selection of bean method to be invoked.
from("direct:start").bean(new ExampleBean(), "methodName");

// Camel will create the instance of bean and cache it for you.
from("direct:start").bean(ExampleBean.class);
Copy to Clipboard Toggle word wrap

43.6. bean Binding

如何选择需要调用的方法(如果没有通过 方法 参数明确指定),并从消息构建参数值如何由 Bean Binding 机制定义,该机制在整个 Camel 中各种 Bean 集成机制都使用它。

43.7. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用
  • 组件
  • bean Binding
  • Bean 集成

第 44 章 BeanIO DataFormat

作为 Camel 2.10 版本提供

BeanIO 数据格式使用 BeanIO 处理扁平载荷(如 XML、CSV、分隔或固定长度格式)。

BeanIO 使用一个 映射 XML 文件进行配置,在其中定义从扁平格式到对象(POJO)的映射。使用这个映射文件是必须的。

44.1. 选项

BeanIO 数据格式支持 9 个选项,它们如下。

Expand
名称默认Java 类型描述

mapping

 

字符串

BeanIO 映射文件.默认从 classpath 加载。您可以使用 file:、http: 或 classpath: 前缀,以注明用于加载映射文件的位置。

streamName

 

字符串

要使用的流的名称。

ignoreUnidentifiedRecords

false

布尔值

是否忽略未识别的记录.

ignoreUnexpectedRecords

false

布尔值

是否忽略意外记录。

ignoreInvalidRecords

false

布尔值

是否忽略无效记录。

encoding

 

字符串

要使用的 charset。默认情况下,JVM 平台的默认 charset。

beanReaderErrorHandlerType

 

字符串

在解析时,使用自定义 org.apache.camel.dataformat.beanio.BeanIOErrorHandler 作为错误处理程序。配置错误处理程序的完全限定类名称。请注意,选项 ignoreUnidentifiedRecords、ignoreUnexpectedRecords 和 ignoreInvalidRecords 在使用自定义错误处理程序时可能无法使用。

unmarshalSingleObject

false

布尔值

该选项可控制是否作为对象列表还是仅作为单个对象进行分类。前者是默认模式,后者仅用于特殊用例,其中 beanio 将 Camel 消息映射到单个 POJO bean。

contentTypeHeader

false

布尔值

如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。

44.2. Spring Boot Auto-Configuration

组件支持 10 个选项,如下所示。

Expand
名称描述默认类型

camel.dataformat.beanio.bean-reader-error-handler-type

在解析时,使用自定义 org.apache.camel.dataformat.beanio.BeanIOErrorHandler 作为错误处理程序。配置错误处理程序的完全限定类名称。请注意,选项 ignoreUnidentifiedRecords、ignoreUnexpectedRecords 和 ignoreInvalidRecords 在使用自定义错误处理程序时可能无法使用。

 

字符串

camel.dataformat.beanio.content-type-header

如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。

false

布尔值

camel.dataformat.beanio.enabled

启用 beanio 数据格式

true

布尔值

camel.dataformat.beanio.encoding

要使用的 charset。默认情况下,JVM 平台的默认 charset。

 

字符串

camel.dataformat.beanio.ignore-invalid-records

是否忽略无效记录。

false

布尔值

camel.dataformat.beanio.ignore-unexpected-records

是否忽略意外记录。

false

布尔值

camel.dataformat.beanio.ignore-unidentified-records

是否忽略未识别的记录.

false

布尔值

camel.dataformat.beanio.mapping

BeanIO 映射文件.默认从 classpath 加载。您可以使用 file:、http: 或 classpath: 前缀,以注明用于加载映射文件的位置。

 

字符串

camel.dataformat.beanio.stream-name

要使用的流的名称。

 

字符串

camel.dataformat.beanio.unmarshal-single-object

该选项可控制是否作为对象列表还是仅作为单个对象进行分类。前者是默认模式,后者仅用于特殊用例,其中 beanio 将 Camel 消息映射到单个 POJO bean。

false

布尔值

ND

44.3. 使用

映射文件的示例如下:

44.3.1. 使用 Java DSL

要使用 BeanIODataFormat,您需要使用映射文件以及流的名称配置数据格式。
在 Java DSL 中,这可如下所示。streamName 是 "employeeFile"。

然后,我们有两个路由。第一个路由用于将 CSV 数据转换为 List<Employee> Java 对象。然后,我们被分割,因此模拟端点
会接收每行的消息。

第二代路由用于反向操作,以将 List<Employee> 转换为 CSV 数据流。

例如,CSV 数据可如下所示:

44.3.2. 使用 XML DSL

要在 XML 中使用 BeanIO 数据格式,您需要使用 <beanio> XML 标签进行配置,如下所示。路由与上例类似。

44.4. 依赖项

要在 Camel 路由中使用 BeanIO,您需要添加实现此数据格式的 camel-beanio 依赖关系。

如果您使用 Maven,您可以只在 pom.xml 中添加以下内容,将最新的和最大发行版本的版本号替换(请参阅最新版本下载页面)。

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-beanio</artifactId>
  <version>2.10.0</version>
</dependency>
Copy to Clipboard Toggle word wrap

第 45 章 Beanstalk 组件

作为 Camel 版本 2.15 可用

Camel-beanstalk 项目为 Beanstalk 作业检索和后处理作业提供了 Camel 组件。

您可以在 Beanstalk 协议 中找到 Beanstalk 作业生命周期的详细说明。

45.1. 依赖项

Maven 用户需要在其 pom.xml中添加以下依赖项

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-beanstalk</artifactId>
  <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

其中 ${camel-version} 必须替换为 Camel 的实际版本(2.15.0 或更高版本)。

45.2. URI 格式

beanstalk://[host[:port]][/tube][?options]
Copy to Clipboard Toggle word wrap

您可以省略 端口 或两个 主机和端口 :对于 Beanstalk,默认使用("localhost"和 11300)。 如果省略 tube,则 Beanstalk 组件将使用名为"default"的 tube。

收听时,您可能想查看多个问题中的作业。只需用加号符号分隔它们,例如:

beanstalk://localhost:11300/tube1+tube2
Copy to Clipboard Toggle word wrap

Tube 名称将被解码为 URL,因此,如果您的 tube 名称包含诸如 + 或 )的特殊字符,则需要对它们进行 URL 编码,或者使用 RAW 语法,请查看以下详情

通过这种方式,当您将作业写入 Beanstalk 时,您无法指定多个 tubes。

45.3. Beanstalk 选项

Beanstalk 组件支持 2 个选项,它们如下所列。

Expand
名称描述默认类型

connectionSettings Factory (common)

自定义 ConnectionSettingsFactory.指定使用哪个 ConnectionSettingsFactory 连接到 Beanstalkd。在没有 Beantalkd 守护进程的情况下进行单元测试(您可以模拟 ConnectionSettings)

 

ConnectionSettings Factory

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

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

beanstalk:connectionSettings
Copy to Clipboard Toggle word wrap

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

45.3.1. 路径名(1 参数):

Expand
名称描述默认类型

connectionSettings

连接设置主机:port/tube

 

字符串

45.3.2. 查询参数(26 参数):

Expand
名称描述默认类型

command (common)

放置意味着将作业放入 Beanstalk 中。作业正文在 Camel 消息正文中指定。作业 ID 将返回在 Beantalk.jobId 中。删除、发布、touch 或 bury expect 作业 ID 在消息头 Beantalk.jobId 中返回。操作的结果在 Beantalk.result 消息标题开始预期在消息正文中启动的作业数量,并返回在消息标题 Beantalk.result 中实际启动的作业数量。

 

BeanstalkCommand

jobDelay (common)

作业延迟(以秒为单位)。

0

int

jobPriority (common)

作业优先级.(0 是最高,请参阅 Beanstalk 协议)

1000

long

jobTimeToRun (common)

以秒为单位运行的作业时间。(当 0 时,anantalkd 守护进程会自动将其增加到 1,请参阅 Beanstalk 协议。)

60

int

awaitJob (consumer)

是否在将作业从 Beantalk 之前等待作业完成

true

布尔值

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

onFailure (consumer)

在处理失败时使用的命令。

 

BeanstalkCommand

sendEmptyMessageWhenIdle (consumer)

如果轮询使用者没有轮询任何文件,您可以启用这个选项来发送空消息(无正文)。

false

布尔值

useBlockIO (consumer)

是否使用 blockIO。

true

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

pollStrategy (consumer)

可插拔 org.apache.camel.PollingConsumerPollingStrategy 允许您提供自定义实施来控制在轮询操作中通常会发生错误处理,然后再在 Camel 中创建并被路由。

 

PollingConsumerPoll Strategy

同步 (高级)

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

false

布尔值

backoffErrorThreshold (scheduler)

后续错误轮询(因某些错误导致的失败)的数量,在 backoffMultipler 应该启动前发生。

 

int

backoffIdleThreshold (scheduler)

后续闲置轮询的数量,在 backoffMultipler 应该启动之前发生。

 

int

backoffMultiplier (scheduler)

如果行中有多个后续闲置/errors,让调度的轮询消费者重新关闭。然后,倍数是下一次实际尝试发生前跳过的轮询数量。当使用这个选项时,还必须配置 backoffIdleThreshold 和/or backoffErrorThreshold。

 

int

延迟 (scheduler)

下次轮询前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。

500

long

greedy (scheduler)

如果启用了 greedy,则 ScheduledPollConsumer 将立即再次运行,如果上一运行轮询了 1 或更多消息。

false

布尔值

initialDelay (scheduler)

第一次轮询启动前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。

1000

long

runLoggingLevel (scheduler)

消费者日志轮询轮询时启动/完成日志行。此选项允许您为其配置日志级别。

TRACE

LoggingLevel

scheduledExecutorService (scheduler)

允许配置用于使用者的自定义/共享线程池。默认情况下,每个使用者都有自己的单个线程池。

 

ScheduledExecutor 服务

调度程序 (scheduler)

使用来自 camel-spring 或 camel-quartz2 组件的 cron 调度程序

none

ScheduledPollConsumer Scheduler

schedulerProperties (scheduler)

在使用自定义调度程序或任何基于 Spring 的调度程序时配置额外属性。

 

map

startScheduler (scheduler)

调度程序是否应自动启动。

true

布尔值

timeUnit (scheduler)

初始延迟和延迟选项的时间单位。

毫秒

TimeUnit

useFixedDelay (scheduler)

控制是否使用固定延迟或固定率。详情请参阅 JDK 中的 ScheduledExecutorService。

true

布尔值

45.4. Spring Boot Auto-Configuration

组件支持 3 个选项,它们如下所列。

Expand
名称描述默认类型

camel.component.beanstalk.connection-settings-factory

自定义 ConnectionSettingsFactory.指定使用哪个 ConnectionSettingsFactory 连接到 Beanstalkd。在没有 Beantalkd 守护进程的情况下进行单元测试(您可以模拟 ConnectionSettings)。选项是一个 org.apache.camel.component.beanstalk.ConnectionSettingsFactory 类型。

 

字符串

camel.component.beanstalk.enabled

启用 Beantalk 组件

true

布尔值

camel.component.beanstalk.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

producer 行为受 command 参数影响,后者告知执行该作业的操作,可以是

用户在保留或等待 Camel 路由处理它后马上删除作业。虽然第一种方案更像是"消息队列",但第二个情况与"作业队列"类似。这个行为由 consumer.awaitJob 参数控制,它等于 true (后续 Beanstalkd 性质)。

同步时,消费者在成功完成时调用 delete ,并在失败时调用 bury 。您可以通过在 URI 中指定 consumer.onFailure 参数,在失败时执行哪一个命令。它可以取 bur y 的值, 删除或 释放

有一个布尔值参数 consumer.useBlockIO ,它对应于 JavaBeanstalkClient 库中的相同参数。默认情况下,它是 true

在指定版本 时要小心,因为失败的作业将立即出现在同一 tube 中,并且您的消费者将尝试再次获取它。 您可以 在此期间发布 并指定 jobDelay 。

Beantalk使用者是一个 Scheduled Polling Consumer,这意味着您可以配置更多选项,如消费者轮询的频率。如需了解更多详细信息,请参阅轮询消费者。

45.5. 使用者标头

使用者在 Exchange 消息中存储多个作业标头:

Expand
属性类型描述

beanstalk.jobId

long

任务 ID

beanstalk.tube

字符串

包含此作业的 tube 的名称

beanstalk.state

字符串

"ready" 或 "delayed" 或 "reserveded" 或 "buried" (必须是 "reserved")

beanstalk.priority

long

设置优先级值

beanstalk.age

int

创建此作业后的时间(以秒为单位)

beanstalk.time-left

int

在服务器将该作业放入就绪队列中前的秒数

beanstalk.timeouts

int

此作业在保留过程中超时的次数

beanstalk.releases

int

客户端从保留中释放这个作业的次数

beanstalk.buries

int

该作业被管辖的次数

beanstalk.kicks

int

该作业启动的次数

45.6. 例子

此 Camel 组件可让您请求作业进行处理,并将其提供给 Beanstalkd 守护进程。我们简单的演示路由可能类似如下

from("beanstalk:testTube").
   log("Processing job #${property.beanstalk.jobId} with body ${in.body}").
   process(new Processor() {
     @Override
     public void process(Exchange exchange) {
       // try to make integer value out of body
       exchange.getIn().setBody( Integer.valueOf(exchange.getIn().getBody(classOf[String])) );
     }
   }).
   log("Parsed job #${property.beanstalk.jobId} to body ${in.body}");
Copy to Clipboard Toggle word wrap
from("timer:dig?period=30seconds").
   setBody(constant(10)).log("Kick ${in.body} buried/delayed tasks").
   to("beanstalk:testTube?command=kick");
Copy to Clipboard Toggle word wrap

在第一个路由中,我们正在监听新的作业。当它们到达时,我们将尝试从消息正文解析整数值。如果成功,请记录它,并成功交换完成,使 Camel 组件能够自动从 Beanstalk 中删除 此任务。简而言,当我们无法解析作业数据时,交换失败,Camel 组件会默认将其捆绑,以便稍后进行处理或可能继续手动检查失败的作业。 

因此,第二个路由定期请求 Beanstalk 从周围和/或延迟状态启动 10 个作业到正常队列。 

 

45.7. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用

第 46 章 bean Validator 组件

作为 Camel 版本 2.3 可用

Validator 组件使用 Java Bean Validation API (JSR 303)执行消息正文验证。Camel 使用参考实施,即 Hibernate Validator

Maven 用户需要将以下依赖项添加到其 pom.xml 中:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-bean-validator</artifactId>
    <version>x.y.z</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

46.1. URI 格式

bean-validator:label[?options]
Copy to Clipboard Toggle word wrap

或者

bean-validator://label[?options]
Copy to Clipboard Toggle word wrap

其中 label 是描述端点的任意文本值。
您可以使用以下格式在 URI 中附加查询选项 ?option=value&option=value&…​

46.2. URI 选项

Bean Validator 组件没有选项。

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

bean-validator:label
Copy to Clipboard Toggle word wrap

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

46.2.1. 路径名(1 参数):

Expand
名称描述默认类型

label

需要 标签是描述端点的任意文本值

 

字符串

46.2.2. 查询参数(6 参数):

Expand
名称描述默认类型

constraintValidatorFactory (producer)

使用自定义 ConstraintValidatorFactory

 

ConstraintValidator Factory

group (producer)

使用自定义验证组

javax.validation.groups.Default

字符串

messageInterpolator (producer)

使用自定义 MessageInterpolator

 

MessageInterpolator

traversableResolver (producer)

使用自定义 TraversableResolver

 

TraversableResolver

validationProviderResolver (producer)

使用自定义 ValidationProviderResolver

 

ValidationProvider Resolver

同步 (高级)

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

false

布尔值

46.3. Spring Boot Auto-Configuration

组件支持 2 个选项,如下所示。

Expand
名称描述默认类型

camel.component.bean-validator.enabled

启用 bean-validator 组件

true

布尔值

camel.component.bean-validator.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

46.4. OSGi 部署

要在 OSGi 环境中使用 Hibernate 验证器,请使用专用 ValidationProviderResolver 实施,就像 org.apache.camel.component.bean.validator.HibernateValidationProviderResolver 一样。以下代码片段演示了此方法。请记住,您可以使用从 Camel 2.13.0 开始的 HibernateValidationProviderResolver

Using HibernateValidationProviderResolver

from("direct:test").
  to("bean-validator://ValidationProviderResolverTest?validationProviderResolver=#myValidationProviderResolver");

...

<bean id="myValidationProviderResolver" class="org.apache.camel.component.bean.validator.HibernateValidationProviderResolver"/>
Copy to Clipboard Toggle word wrap

如果没有定义自定义 ValidationProviderResolver,并且验证器组件已部署到 OSGi 环境中,则将自动使用 HibernateValidationProviderResolver

46.5. 示例

假设我们带有以下注解的 java bean

Car.java

public class Car {

    @NotNull
    private String manufacturer;

    @NotNull
    @Size(min = 5, max = 14, groups = OptionalChecks.class)
    private String licensePlate;

    // getter and setter
}
Copy to Clipboard Toggle word wrap

以及我们自定义验证组的接口定义

OptionalChecks.java

public interface OptionalChecks {
}
Copy to Clipboard Toggle word wrap

通过以下 Camel 路由,只有属性制造商和 licensePlate 上的 @NotNull 约束会被验证(Camel 使用默认组 javax.validation.Default)。

from("direct:start")
.to("bean-validator://x")
.to("mock:end")
Copy to Clipboard Toggle word wrap

如果要检查组中的 OptionalChecks 中的约束,则必须定义如下路由

from("direct:start")
.to("bean-validator://x?group=OptionalChecks")
.to("mock:end")
Copy to Clipboard Toggle word wrap

如果要检查这两个组中的限制,您必须首先定义新接口

AllChecks.java

@GroupSequence({Default.class, OptionalChecks.class})
public interface AllChecks {
}
Copy to Clipboard Toggle word wrap

然后,您的路由定义应如下所示

from("direct:start")
.to("bean-validator://x?group=AllChecks")
.to("mock:end")
Copy to Clipboard Toggle word wrap

如果您必须提供自己的消息间策略器、遍历解析器和约束验证器工厂,则必须编写类似此的路由。

<bean id="myMessageInterpolator" class="my.ConstraintValidatorFactory" />
<bean id="myTraversableResolver" class="my.TraversableResolver" />
<bean id="myConstraintValidatorFactory" class="my.ConstraintValidatorFactory" />

from("direct:start")
.to("bean-validator://x?group=AllChecks&messageInterpolator=#myMessageInterpolator
&traversableResolver=#myTraversableResolver&constraintValidatorFactory=#myConstraintValidatorFactory")
.to("mock:end")
Copy to Clipboard Toggle word wrap

也可以将约束描述为 XML,而不是 Java 注解。在这种情况下,您必须提供文件 META-INF/validation.xml,其外观如下

validation.xml

<?xml version="1.0" encoding="UTF-8"?>
<validation-config
    xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration">
    <default-provider>org.hibernate.validator.HibernateValidator</default-provider>
    <message-interpolator>org.hibernate.validator.engine.ResourceBundleMessageInterpolator</message-interpolator>
    <traversable-resolver>org.hibernate.validator.engine.resolver.DefaultTraversableResolver</traversable-resolver>
    <constraint-validator-factory>org.hibernate.validator.engine.ConstraintValidatorFactoryImpl</constraint-validator-factory>

    <constraint-mapping>/constraints-car.xml</constraint-mapping>
</validation-config>
Copy to Clipboard Toggle word wrap

constraints-car.xml 文件

constraints-car.xml

<?xml version="1.0" encoding="UTF-8"?>
<constraint-mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.0.xsd"
    xmlns="http://jboss.org/xml/ns/javax/validation/mapping">
    <default-package>org.apache.camel.component.bean.validator</default-package>

    <bean class="CarWithoutAnnotations" ignore-annotations="true">
        <field name="manufacturer">
            <constraint annotation="javax.validation.constraints.NotNull" />
        </field>

        <field name="licensePlate">
            <constraint annotation="javax.validation.constraints.NotNull" />

            <constraint annotation="javax.validation.constraints.Size">
                <groups>
                    <value>org.apache.camel.component.bean.validator.OptionalChecks</value>
                </groups>
                <element name="min">5</element>
                <element name="max">14</element>
            </constraint>
        </field>
    </bean>
</constraint-mappings>
Copy to Clipboard Toggle word wrap

下面是一个示例路由定义的 XML 语法,其中 OrderedChecks 可以是 https://github.com/apache/camel/blob/master/components/camel-bean-validator/src/test/java/org/apache/camel/component/bean/validator/OrderedChecks.java

请注意,正文应包含要验证的类实例。

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
        <route>
            <from uri="direct:start"/>
            <to uri="bean-validator://x?group=org.apache.camel.component.bean.validator.OrderedChecks"/>
        </route>
    </camelContext>
</beans>
Copy to Clipboard Toggle word wrap

46.6. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用

第 47 章 绑定组件(已弃用)

作为 Camel 2.11 版本提供

在 Camel 术语中,绑定 是一种在合同中嵌套端点的方法;如数据格式、内容增强器 或验证步骤。绑定是可选的,您可以选择在任何 camel 端点上使用它们。

SwitchYard 项目 将服务合同添加到各种技术(如 Camel 和许多其他技术)来激发绑定。但是,Camel Bindings 并未将 Camel 嵌套在 SCA 中,而是提供将 Camel 端点嵌套在 Camel 框架本身中的合同;因此,您可以在任何 Camel 路由中使用它们。

47.1. 选项

Binding 组件没有选项。

Binding 端点使用 URI 语法配置:

binding:bindingName:delegateUri
Copy to Clipboard Toggle word wrap

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

47.1.1. 路径名(2 参数):

Expand
名称描述默认类型

bindingName

Camel 注册表中查询 所需的 绑定名称。

 

字符串

delegateUri

需要 委派端点的 Uri。

 

字符串

47.1.2. 查询参数(4 参数):

Expand
名称描述默认类型

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN/ERROR 级别并忽略。

false

布尔值

exceptionHandler (consumer)

要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN/ERROR 级别记录并忽略。

 

ExceptionHandler

exchangePattern (consumer)

在创建交换时设置默认交换模式。

 

ExchangePattern

同步 (高级)

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

false

布尔值

47.2. 使用绑定

绑定目前是一个定义合同的 bean (尽管我们希望向 Camel DSL 添加绑定)。

定义绑定端点的方法有几种(即具有绑定绑定的端点)。

47.3. 使用绑定 URI

您可以使用 binding:nameOfBinding: 前缀为任何端点 URI,其中 nameOfBinding 是 registry 中的 Binding bean 的名称。

from("binding:jaxb:activemq:myQueue").to("binding:jaxb:activemq:anotherQueue")
Copy to Clipboard Toggle word wrap

此处我们使用了"jaxb"绑定,例如,可以使用 JAXB 数据格式进行汇总和未汇总的消息。

47.4. 使用 BindingComponent

存在一个称为 BindingComponent 的组件,可以在 registry 中通过依赖项注入配置,允许创建已经绑定到某些绑定的端点。

例如,如果您使用代码在 registry 中注册一个名为 "jsonmq" 的新组件,如下所示

JacksonDataFormat format = new JacksonDataFormat(MyBean.class);
context.bind("jsonmq", new BindingComponent(new DataFormatBinding(format), "activemq:foo."));
Copy to Clipboard Toggle word wrap

然后,您可以使用端点,就像它是任何其他端点一样。

from("jsonmq:myQueue").to("jsonmq:anotherQueue")
Copy to Clipboard Toggle word wrap

它使用 queueus "foo.myQueue" 和 "foo.anotherQueue",并使用给定的 Jackson Data Format 来回放和关闭队列。

47.5. 何时使用绑定

如果您在一个路由中仅使用端点一次,则绑定实际上可能比直接使用 'raw' 端点并照正常使用显式 marshalling 和 验证更为复杂和工作。

但是,当您将多个路由组成在一起时,绑定可以有所帮助;或使用一个路由作为"模板",用于配置输入和输出端点;绑定提供了将合同和端点嵌套在一起的不错方法。

绑定的另一个优点是,当您使用多个使用相同绑定的端点时,而不必提到特定的数据格式或验证规则,您只能使用 BindingComponent 将端点嵌套在您选择的绑定中。

因此绑定是构成工具的真正位置;只有当情况至关重要时,使用它们才会有额外的复杂性,除非您有大量路由或端点。

第 48 章 Bindy DataFormat

可作为 Camel 版本 2.0 提供

此组件的目标是允许解析/绑定非结构化数据(或更精确的非 XML 数据)
到使用注解定义的映射的 Java Bean 中。使用 Bindy,您可以从源(如 )绑定数据:

  • CSV 记录,
  • 固定长度记录,
  • FIX 消息,
  • 或者几乎任何其他非结构化数据

到一个或多个 Plain Old Java 对象(POJO)。Bindy 根据 java 属性的类型转换数据。OVAS 可以和在某些情况下提供的一对多关系链接。此外,对于如 Date、Duble、Float、Integer、Short、Long 和 BigDecal 等数据类型,您可以提供在属性格式应用的模式。

对于 BigDecimal number,您还可以定义精确数以及十进制和分组分隔符。

Expand
类型格式类型模式示例Link

Date

DateFormat

dd-MM-yyyy

http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html

十进制*

Decimalformat

..##

http://java.sun.com/j2se/1.5.0/docs/api/java/text/DecimalFormat.html

十进制* = Double, Integer, Float, Short, Long

*Format supported*
Copy to Clipboard Toggle word wrap

第一个发行版本只支持用逗号分开的值字段和键值对字段(例如:FIX 消息)。

要使用 camel-bindy,您必须首先在软件包中定义模型(例如 com.acme.model)和每个模型类(如 Order、client、Instrument、…​)将所需的注解(此处所示)添加到 Class 或 字段中。

*Multiple models*
Copy to Clipboard Toggle word wrap

如果您使用多个模型,则必须将每个模型放在它自己的软件包中,以防止无法预计的结果。

Camel 2.16 开始,不再如此,因为您可以在同一软件包中安全地有多个模型,因为现在您可以使用类名称而不是软件包名称来配置绑定。

48.1. 选项

Bindy dataformat 支持 5 选项,如下所示。

Expand
名称默认Java 类型描述

type

 

BindyType

是否使用 csv、fixd 或 key value 对模式。根据所选的数据格式,默认值为 Csv 或 KeyValue。

classType

 

字符串

要使用的模型类的名称。

locale

 

字符串

要配置默认的区域设置,如 us 代表单元状态。要使用 JVM 平台默认区域设置,请使用默认名称

unwrapSingleInstance

true

布尔值

当 unmarshalling 应该未换行并返回单个实例时,而不是在 java.util.List 中嵌套。

contentTypeHeader

false

布尔值

如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。

48.2. Spring Boot Auto-Configuration

组件支持 18 个选项,如下所示。

Expand
名称描述默认类型

camel.dataformat.bindy-csv.class-type

要使用的模型类的名称。

 

字符串

camel.dataformat.bindy-csv.content-type-header

如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。

false

布尔值

camel.dataformat.bindy-csv.enabled

启用 bindy-csv dataformat

true

布尔值

camel.dataformat.bindy-csv.locale

要配置默认的区域设置,如 us 代表单元状态。要使用 JVM 平台默认区域设置,请使用默认名称

 

字符串

camel.dataformat.bindy-csv.type

是否使用 csv、fixd 或 key value 对模式。

 

BindyType

camel.dataformat.bindy-csv.unwrap-single-instance

当 unmarshalling 应该未换行并返回单个实例时,而不是在 java.util.List 中嵌套。

true

布尔值

camel.dataformat.bindy-fixed.class-type

要使用的模型类的名称。

 

字符串

camel.dataformat.bindy-fixed.content-type-header

如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。

false

布尔值

camel.dataformat.bindy-fixed.enabled

启用 bindy-fixed dataformat

true

布尔值

camel.dataformat.bindy-fixed.locale

要配置默认的区域设置,如 us 代表单元状态。要使用 JVM 平台默认区域设置,请使用默认名称

 

字符串

camel.dataformat.bindy-fixed.type

是否使用 csv、fixd 或 key value 对模式。

 

BindyType

camel.dataformat.bindy-fixed.unwrap-single-instance

当 unmarshalling 应该未换行并返回单个实例时,而不是在 java.util.List 中嵌套。

true

布尔值

camel.dataformat.bindy-kvp.class-type

要使用的模型类的名称。

 

字符串

camel.dataformat.bindy-kvp.content-type-header

如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。

false

布尔值

camel.dataformat.bindy-kvp.enabled

启用 bindy-kvp 数据格式

true

布尔值

camel.dataformat.bindy-kvp.locale

要配置默认的区域设置,如 us 代表单元状态。要使用 JVM 平台默认区域设置,请使用默认名称

 

字符串

camel.dataformat.bindy-kvp.type

是否使用 csv、fixd 或 key value 对模式。

 

BindyType

camel.dataformat.bindy-kvp.unwrap-single-instance

当 unmarshalling 应该未换行并返回单个实例时,而不是在 java.util.List 中嵌套。

true

布尔值

ND

48.3. 注解

创建的注解可将您的模型的不同概念映射到 POJO,如 :

  • 记录类型(csv、键值对(例如 FIX 消息)、固定长度 …​)、
  • 链接(用于链接对象),
  • DataField 及其属性(int、type、…​))
  • KeyValuePairField(对于在修复财务消息中具有的 key = 价值格式)
  • 部分(用于识别标题、正文和页脚部分)
  • OneToMany,
  • BindyConverter (since 2.18.0),
  • 格式因素(自 2.18.0 开始)

本节将描述它们:

48.4. 1. CsvRecord

CsvRecord 注解用于标识模型的根类。它代表记录 = CSV 文件的一行,并可链接到多个子模型类。

Expand
注解名称记录类型级别

CsvRecord

csv

Expand
参数名称typeinfo

分隔符

字符串

必需 - 可以是 '、' 或 ';' 或 'anything"。支持的唯一空白字符是标签(\t)。不支持其它空格(空格)。这个值被解释为正则表达式。如果要使用正则表达式中具有特殊含义的符号,例如 '|' 符号,而不是您必须屏蔽它,如 '|'

skipFirstLine

布尔值

可选 - 默认值 = false - 允许跳过 CSV 文件的第一行

crlf

字符串

可选 - 可能的值 = WINDOWS、UNIX、MAC 或 custom; 默认值。WINDOWS - 允许定义要使用的回车字符。如果您指定之前列出的三个值,则输入(custom)的值将用作 CRLF 字符。

generateHeaderColumns

布尔值

可选 - 默认值 = false - 用来生成 CSV 的标头列

autospanLine

布尔值

Camel 2.13/2.12.2: 可选 - 默认值为 value = false - 如果启用最后一个列,则最后一个列将自动生成到行尾,例如,如果其注释,则此行可以包含所有字符,以及分隔符 char。

isOrdered

布尔值

可选 - 默认值 = false - 允许在生成 CSV 时更改字段的顺序

quote

字符串

Camel 2.8.3/2.9: 选项 - 允许指定生成 CSV 时字段的引号字符。此注解与模型的 root 类关联,必须声明一个时间。

引用

布尔值

*Camel 2.11:*optional - 默认值 = false - 在生成 CSV 时必须用引号(和标头)来加引号。

endWithLineBreak

布尔值

Camel 2.21: 可选 - 默认值 = true - 如果 CSV 生成的文件是否应该以换行符结尾。

case 1 : separator = ','

用于分隔 CSV 记录中字段的分隔符为",即:

10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500,
USD,08-01-2009
Copy to Clipboard Toggle word wrap
@CsvRecord( separator = "," )
public Class Order {

}
Copy to Clipboard Toggle word wrap

case 2 : separator = ';'

与前面的情况进行比较,此处的分隔符为 ';' 而不是 ',':

10; jine; M; XD12345678; Fortis Dynamic 15/15; 2500; USD; 08-01-2009

@CsvRecord( separator = ";" )
public Class Order {

}
Copy to Clipboard Toggle word wrap

case 3 : separator = '|'

与前面的情况进行比较,这里的分隔符为 '|' 而不是 ';':

10| J| Pauline| M| XD12345678| Fortis Dynamic 15/15| 2500| USD|
08-01-2009
Copy to Clipboard Toggle word wrap
@CsvRecord( separator = "\\|" )
public Class Order {

}
Copy to Clipboard Toggle word wrap

case 4 : separator = '\",\"'

适用于 Camel 2.8.2 或更早版本

当解析 CSV 记录的字段包含 '、' 或 ';',它也用作分隔符,我们需要找到另一个策略
告知 camel bindy 如何处理此问题单。要使用逗号定义包含数据的字段,您可以使用 simple 或双引号
作为分隔符(例如:'10'、'Street 10、NY'、'USA' 或 "10", "Street 10, NY", "USA")。
Remark :在这种情况下,该行的第一个和最后一个字符(即简单或双引号)将通过 bindy 删除

"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15"
2500","USD","08-01-2009"
Copy to Clipboard Toggle word wrap
@CsvRecord( separator = "\",\"" )
public Class Order {

}
Copy to Clipboard Toggle word wrap

Camel 2.8.3/2.9 或 never bindy 将自动检测记录是否用单引号或双引号括起来,并在从 CSV 变为对象时自动删除这些引号。因此 ,不要在 分隔符中包含引号,但简单操作如下:

"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15"
2500","USD","08-01-2009"
Copy to Clipboard Toggle word wrap
@CsvRecord( separator = "," )
public Class Order {

}
Copy to Clipboard Toggle word wrap

请注意,如果要将对象与 CSV 总结和使用引号,则需要使用 @CsvRecord 上的 quote 属性来指定要使用的引号字符:

@CsvRecord( separator = ",", quote = "\"" )
public Class Order {

}
Copy to Clipboard Toggle word wrap

问题单 5: : 分隔符和跳过优先行

当客户端希望在文件的第一行中时,特性很有趣,数据字段的名称是:

订单 ID、客户端 ID、名字、姓氏、是代码、工具名称、数量、货币、日期

要告知 bindy,在解析过程中必须跳过此第一行,然后我们使用属性 :

@CsvRecord(separator = ",", skipFirstLine = true)
public Class Order {

}
Copy to Clipboard Toggle word wrap

case 6 : generateHeaderColumns

要在生成 CSV 的第一行中添加,属性 generateHeaderColumns 必须设为 true,如此注解所示:

@CsvRecord( generateHeaderColumns = true )
public Class Order {

}
Copy to Clipboard Toggle word wrap

因此,在 unmarshaing 过程中,Bindy 将生成 CSV,如 :

订单 ID、客户端 ID、名字、姓氏、是代码、工具名称、数量、货币、日期

10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500, USD,08-01-2009
Copy to Clipboard Toggle word wrap

案例 7:回车时返回

如果 camel-bindy 的平台将不会运行 Windows,但 Macintosh 或 Unix 将不会更改 crlf 属性,如下所示。提供三个值:WINDOWS、UNIX 或 MAC

@CsvRecord(separator = ",", crlf="MAC")
public Class Order {

}
Copy to Clipboard Toggle word wrap

另外,如果由于某种原因需要添加不同的行结尾字符,您可以选择使用 crlf 参数指定它。在以下示例中,我们可以使行以逗号加换行符结尾:

@CsvRecord(separator = ",", crlf=",\n")
public Class Order {

}
Copy to Clipboard Toggle word wrap

case 8 : isOrdered

有时,从模型创建 CSV 记录时要遵循的顺序与解析过程中使用的顺序不同。然后,在这种情况下,我们可以使用 isOrdered = true 来指明此属性与 DataField 注解的属性 'position' 结合使用。

@CsvRecord(isOrdered = true)
public Class Order {

   @DataField(pos = 1, position = 11)
   private int orderNr;

   @DataField(pos = 2, position = 10)
   private String clientNr;

}
Copy to Clipboard Toggle word wrap

Remark:pos 用于解析文件,流,而位置用于生成 CSV

48.6. 3.DataField

DataField 注释定义字段的属性。每个数据字段都由其在记录中的位置、类型(字符串、int、date、…​)以及可选的模式识别

Expand
注解名称记录类型级别

DataField

all

属性

Expand
参数名称typeinfo

pos

int

mandatory - 字段的输入 位置。从 1 到 …​ - 的数字号 - 查看位置参数。

pattern

字符串

可选 - 默认值 = "" - 将用于格式化 Decimal、Date、

length

int

可选 - 代表固定长度格式的字段长度

精度

int

可选 - 代表在完成 12 月号将被格式化/解析时的精度

pattern

字符串

可选 - 默认值 = "" - 供 Java 格式程序使用(例如:SimpleDateFormat)格式/无效数据。如果使用模式,则建议在 bindy 数据格式中设置 locale。设置为已知区域设置,如 "us",或使用 "default" 来使用平台默认区域设置。请注意,"default"需要 Camel 2.14/2.13.3/2.12.5。

position

int

可选 - 当 CSV 生成的 CSV 中字段的位置(输出消息)的位置必须与输入位置不同(pos)时,必须使用。请参阅 pos 参数。

required

布尔值

optional - default value = "false"

trim

布尔值

optional - default value = "false"

defaultValue

字符串

Camel 2.10: 可选 - 默认值 = "" - 定义对应 CSV 字段为空/不可用时字段的默认值

impliedDecimalSeparator

布尔值

Camel 2.11: 可选 - 默认值 = "false" - 如果指定位置有小点表示

lengthPos

int

Camel 2.11 :可选 - 可用于识别固定长度为固定长度的固定记录中的数据字段

对齐

字符串

可选 - 默认值 = "R" - 将文本附加到右或保留在固定长度字段中。使用 'R' 或 'L' 的值。

delimiter

字符串

Camel 2.11: 可选 - 可用于在固定长度记录中分离可变长度字段的末尾

case 1 : pos

此参数/attribute 代表 csv 记录中字段的位置

位置

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 5)
    private String isinCode;

}
Copy to Clipboard Toggle word wrap

如您在本例中看到的那样,位置从 '1' 开始,但在类 Order 中继续为 '5'。从 '2' 到 '4' 的数字在类客户端中定义(请参见下文之后)。

在另一个模型类中继续位置

public class Client {

    @DataField(pos = 2)
    private String clientNr;

    @DataField(pos = 3)
    private String firstName;

    @DataField(pos = 4)
    private String lastName;
}
Copy to Clipboard Toggle word wrap

case 2 : pattern

模式允许增强或验证数据格式

pattern

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 5)
    private String isinCode;

    @DataField(name = "Name", pos = 6)
    private String instrumentName;

    @DataField(pos = 7, precision = 2)
    private BigDecimal amount;

    @DataField(pos = 8)
    private String currency;

    // pattern used during parsing or when the date is created
    @DataField(pos = 9, pattern = "dd-MM-yyyy")
    private Date orderDate;
}
Copy to Clipboard Toggle word wrap

案例 3:精准

当您想定义数字的十进制部分时,精度非常有用

精度

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @Link
    private Client client;

    @DataField(pos = 5)
    private String isinCode;

    @DataField(name = "Name", pos = 6)
    private String instrumentName;

    @DataField(pos = 7, precision = 2)
    private BigDecimal amount;

    @DataField(pos = 8)
    private String currency;

    @DataField(pos = 9, pattern = "dd-MM-yyyy")
    private Date orderDate;
}
Copy to Clipboard Toggle word wrap

问题单 4:输出中的 Position 不同

position 属性将告知绑定如何在生成的 CSV 记录中放置字段。默认情况下,使用的位置与通过属性 'pos' 定义的位置对应。如果位置不同(即,我们有一种可以比可以使用"组成"比较出的统计处理过程对比)来说明这一点。

下面是一个示例

输出中位置不同

@CsvRecord(separator = ",", isOrdered = true)
public class Order {

    // Positions of the fields start from 1 and not from 0

    @DataField(pos = 1, position = 11)
    private int orderNr;

    @DataField(pos = 2, position = 10)
    private String clientNr;

    @DataField(pos = 3, position = 9)
    private String firstName;

    @DataField(pos = 4, position = 8)
    private String lastName;

    @DataField(pos = 5, position = 7)
    private String instrumentCode;

    @DataField(pos = 6, position = 6)
    private String instrumentNumber;
}
Copy to Clipboard Toggle word wrap

注释 @DataField 的此属性必须与属性 isOrdered = true 结合使用。

问题单 5:必需

如果字段是必须的,只需使用将属性 'required' 设为 true

必需

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 2, required = true)
    private String clientNr;

    @DataField(pos = 3, required = true)
    private String firstName;

    @DataField(pos = 4, required = true)
    private String lastName;
}
Copy to Clipboard Toggle word wrap

如果记录中没有此字段,解析器会使用以下信息来引发错误:

有些字段缺失(可选或强制),行:

case 6 : trim

如果字段具有前应该删除的前导和/或尾随空格,只需将属性 'trim' 设置为 true

Trim

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1, trim = true)
    private int orderNr;

    @DataField(pos = 2, trim = true)
    private Integer clientNr;

    @DataField(pos = 3, required = true)
    private String firstName;

    @DataField(pos = 4)
    private String lastName;
}
Copy to Clipboard Toggle word wrap

case 7 : defaultValue

如果未定义字段,则使用 defaultValue 属性指示的值

默认值

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 2)
    private Integer clientNr;

    @DataField(pos = 3, required = true)
    private String firstName;

    @DataField(pos = 4, defaultValue = "Barin")
    private String lastName;
}
Copy to Clipboard Toggle word wrap

此属性仅适用于可选字段。

48.7. 4.FixedLengthRecord

FixedLengthRecord 注解用于标识模型的根类。它代表记录 = 包含已固定长度的文件/消息的行,并可链接到多个子类。这个格式是字段中的一个特定用法数据,可以与右或左键一致。
当数据的大小不会完全填写字段的长度时,我们可以添加"padd"字符。

Expand
注解名称记录类型级别

FixedLengthRecord

FIXED

Expand
参数名称typeinfo

crlf

字符串

可选 - 可能的值 = WINDOWS、UNIX、MAC 或 custom; 默认值。WINDOWS - 允许定义要使用的回车字符。如果您指定之前列出的三个值以外的值,则输入(custom)的值将用作 CRLF 字符。这个选项只在 marshalling 期间使用,而 unmarshalling 使用系统默认 JDK 提供行分隔符,除非 eol 已自定义

EOL

字符串

可选 - default="",它是一个空字符串。字符用于在未编出时(可选 - default = "" )在每条记录后结束行结束,这将帮助 JDK 提供默认的 JDK 提供行分隔符,除非提供任何其他行分隔符)。这个选项只适用于 unmarshalling,其中 marshalling 使用系统默认的分隔符作为"WINDOWS",除非提供任何其他值

paddingChar

char

mandatory - 默认值 = ' '

length

int

mandatory = 固定长度记录的大小

hasHeader

布尔值

Camel 2.11 - 可选 - 表明此类型的记录前面是文件 / 流开头的单个标头记录

hasFooter

布尔值

Camel 2.11 - 可选 - 表明此类型的记录可能后跟文件 / stream 末尾的单个 footer 记录

skipHeader

布尔值

Camel 2.11 - 可选 - 配置数据格式,以跳过标题记录的 marshalling / unmarshalling。在主记录(例如,而不是标题或页脚)上配置此参数。

skipFooter

布尔值

Camel 2.11 - 可选 - 配置数据格式,以跳过页脚记录的总结/未总结,在主记录(例如,而不是标头或 footer)上配置此参数。

isHeader

布尔值

Camel 2.11 - 可选 - 识别这个 FixedLengthRecord 作为标头记录

isFooter

布尔值

Camel 2.11 - 可选 - 识别这个 FixedLengthRecords 作为页脚记录

ignoreTrailingChars

布尔值

Camel 2.11.1 - 可选 - 在卸载 / 解析时,可以忽略最后一个映射文件以外的字符。 此注解与模型的 root 类关联,必须声明一个时间。

hasHeader/hasFooter 参数与Header/isFooter 相互排斥。记录不可是标题/页脚和主固定长度记录。

问题单 1:简单固定长度记录

这个简单示例演示了如何设计模型来解析/格式固定的信息

10A9PaulineMISINXD12345678BUYShare2500.45USD01-08-2009
Copy to Clipboard Toggle word wrap

fixed-simple

@FixedLengthRecord(length=54, paddingChar=' ')
public static class Order {

    @DataField(pos = 1, length=2)
    private int orderNr;

    @DataField(pos = 3, length=2)
    private String clientNr;

    @DataField(pos = 5, length=7)
    private String firstName;

    @DataField(pos = 12, length=1, align="L")
    private String lastName;

    @DataField(pos = 13, length=4)
    private String instrumentCode;

    @DataField(pos = 17, length=10)
    private String instrumentNumber;

    @DataField(pos = 27, length=3)
    private String orderType;

    @DataField(pos = 30, length=5)
    private String instrumentType;

    @DataField(pos = 35, precision = 2, length=7)
    private BigDecimal amount;

    @DataField(pos = 42, length=3)
    private String currency;

    @DataField(pos = 45, length=10, pattern = "dd-MM-yyyy")
    private Date orderDate;
}
Copy to Clipboard Toggle word wrap

问题单 2:修复长度记录,并提供对齐和 padding

这更详细地阐述了如何定义字段的对齐以及如何分配 padding 字符,该字符是"这里"

10A9 PaulineM ISINXD12345678BUYShare2500.45USD01-08-2009
Copy to Clipboard Toggle word wrap

fixed-padding-align

@FixedLengthRecord(length=60, paddingChar=' ')
public static class Order {

    @DataField(pos = 1, length=2)
    private int orderNr;

    @DataField(pos = 3, length=2)
    private String clientNr;

    @DataField(pos = 5, length=9)
    private String firstName;

    @DataField(pos = 14, length=5, align="L")   // align text to the LEFT zone of the block
    private String lastName;

    @DataField(pos = 19, length=4)
    private String instrumentCode;

    @DataField(pos = 23, length=10)
    private String instrumentNumber;

    @DataField(pos = 33, length=3)
    private String orderType;

    @DataField(pos = 36, length=5)
    private String instrumentType;

    @DataField(pos = 41, precision = 2, length=7)
    private BigDecimal amount;

    @DataField(pos = 48, length=3)
    private String currency;

    @DataField(pos = 51, length=10, pattern = "dd-MM-yyyy")
    private Date orderDate;
}
Copy to Clipboard Toggle word wrap

案例 3:字段 padding

有时,为记录定义的 default padding 不能应用于字段,因为我们想使用 '0' 而非 '' 添加内容格式。在这种情况下,您可以在模型中使用属性 paddingField 来设置这个值。

10A9 PaulineM ISINXD12345678BUYShare000002500.45USD01-08-2009
Copy to Clipboard Toggle word wrap

fixed-padding-field

@FixedLengthRecord(length = 65, paddingChar = ' ')
public static class Order {

    @DataField(pos = 1, length = 2)
    private int orderNr;

    @DataField(pos = 3, length = 2)
    private String clientNr;

    @DataField(pos = 5, length = 9)
    private String firstName;

    @DataField(pos = 14, length = 5, align = "L")
    private String lastName;

    @DataField(pos = 19, length = 4)
    private String instrumentCode;

    @DataField(pos = 23, length = 10)
    private String instrumentNumber;

    @DataField(pos = 33, length = 3)
    private String orderType;

    @DataField(pos = 36, length = 5)
    private String instrumentType;

    @DataField(pos = 41, precision = 2, length = 12, paddingChar = '0')
    private BigDecimal amount;

    @DataField(pos = 53, length = 3)
    private String currency;

    @DataField(pos = 56, length = 10, pattern = "dd-MM-yyyy")
    private Date orderDate;
}
Copy to Clipboard Toggle word wrap

案例 4:使用分隔符修复长度

修复了长度记录,有时在记录中包含分隔的内容。firstName 和 lastName 字段使用以下示例中的 '^' 字符分隔:

10A9Pauline^M^ISINXD12345678BUYShare000002500.45USD01-08-2009
Copy to Clipboard Toggle word wrap

固定分隔

@FixedLengthRecord()
public static class Order {

    @DataField(pos = 1, length = 2)
    private int orderNr;

    @DataField(pos = 2, length = 2)
    private String clientNr;

    @DataField(pos = 3, delimiter = "^")
    private String firstName;

    @DataField(pos = 4, delimiter = "^")
    private String lastName;

    @DataField(pos = 5, length = 4)
    private String instrumentCode;

    @DataField(pos = 6, length = 10)
    private String instrumentNumber;

    @DataField(pos = 7, length = 3)
    private String orderType;

    @DataField(pos = 8, length = 5)
    private String instrumentType;

    @DataField(pos = 9, precision = 2, length = 12, paddingChar = '0')
    private BigDecimal amount;

    @DataField(pos = 10, length = 3)
    private String currency;

    @DataField(pos = 11, length = 10, pattern = "dd-MM-yyyy")
    private Date orderDate;
}
Copy to Clipboard Toggle word wrap

Camel 2.11 开始,固定长度记录中的 'pos' 值可以选择使用 或dinal 定义,顺序值而不是精确列号。

问题单 5:使用记录定义字段长度的修复长度

有时,固定长度记录可能包含用于定义相同记录中另一个字段的预期长度的字段。在以下示例中,instrumentNumber 字段值的长度由记录中的 instrumentNumberLen 字段的值定义。

10A9Pauline^M^ISIN10XD12345678BUYShare000002500.45USD01-08-2009
Copy to Clipboard Toggle word wrap

固定分隔

@FixedLengthRecord()
public static class Order {

    @DataField(pos = 1, length = 2)
    private int orderNr;

    @DataField(pos = 2, length = 2)
    private String clientNr;

    @DataField(pos = 3, delimiter = "^")
    private String firstName;

    @DataField(pos = 4, delimiter = "^")
    private String lastName;

    @DataField(pos = 5, length = 4)
    private String instrumentCode;

    @DataField(pos = 6, length = 2, align = "R", paddingChar = '0')
    private int instrumentNumberLen;

    @DataField(pos = 7, lengthPos=6)
    private String instrumentNumber;

    @DataField(pos = 8, length = 3)
    private String orderType;

    @DataField(pos = 9, length = 5)
    private String instrumentType;

    @DataField(pos = 10, precision = 2, length = 12, paddingChar = '0')
    private BigDecimal amount;

    @DataField(pos = 11, length = 3)
    private String currency;

    @DataField(pos = 12, length = 10, pattern = "dd-MM-yyyy")
    private Date orderDate;
}
Copy to Clipboard Toggle word wrap

问题单 6:带有标题和页脚修复长度记录

Bindy 将发现配置为模型的一部分配置的固定长度标题和 footer 记录 - 提供注解类存在于与主 @FixedLengthRecord 类或其中一个配置的扫描软件包中。以下文本演示了两个固定长度记录,这些记录由标题记录和页脚记录进行编码。

101-08-2009
10A9 PaulineM ISINXD12345678BUYShare000002500.45USD01-08-2009
10A9 RichN ISINXD12345678BUYShare000002700.45USD01-08-2009
9000000002
Copy to Clipboard Toggle word wrap

fixed-header-and-footer-main-class

@FixedLengthRecord(hasHeader = true, hasFooter = true)
public class Order {

    @DataField(pos = 1, length = 2)
    private int orderNr;

    @DataField(pos = 2, length = 2)
    private String clientNr;

    @DataField(pos = 3, length = 9)
    private String firstName;

    @DataField(pos = 4, length = 5, align = "L")
    private String lastName;

    @DataField(pos = 5, length = 4)
    private String instrumentCode;

    @DataField(pos = 6, length = 10)
    private String instrumentNumber;

    @DataField(pos = 7, length = 3)
    private String orderType;

    @DataField(pos = 8, length = 5)
    private String instrumentType;

    @DataField(pos = 9, precision = 2, length = 12, paddingChar = '0')
    private BigDecimal amount;

    @DataField(pos = 10, length = 3)
    private String currency;

    @DataField(pos = 11, length = 10, pattern = "dd-MM-yyyy")
    private Date orderDate;
}

@FixedLengthRecord(isHeader = true)
public  class OrderHeader {
    @DataField(pos = 1, length = 1)
    private int recordType = 1;

    @DataField(pos = 2, length = 10, pattern = "dd-MM-yyyy")
    private Date recordDate;
}

@FixedLengthRecord(isFooter = true)
public class OrderFooter {

    @DataField(pos = 1, length = 1)
    private int recordType = 9;

    @DataField(pos = 2, length = 9, align = "R", paddingChar = '0')
    private int numberOfRecordsInTheFile;
}
Copy to Clipboard Toggle word wrap

case 7 :解析固定长度记录时跳过内容。(Camel 2.11.1)

通常与提供固定长度记录(包含目标用例所需信息)的系统集成很常见。在这种情况下,跳过声明并解析我们不需要的这些字段。为 accomodate,如果下一个声明字段的 'pos' 值超出最后一个解析字段的光标位置,则 Bindy 将跳过至记录中的下一个映射字段。将绝对的 'pos' 位置用于感兴趣的字段(而不是 或dinal 值)会导致 Bindy 跳过两个字段之间的内容。

同样,除某些字段之外的内容都可能值得关注。在这种情况下,您可以通过在 @FixedLengthRecord 声明上设置 ignoreTrailingChars 属性来跳过除最后映射字段以外的任何内容的解析。

@FixedLengthRecord(ignoreTrailingChars = true)
public static class Order {

    @DataField(pos = 1, length = 2)
    private int orderNr;

    @DataField(pos = 3, length = 2)
    private String clientNr;

    // any characters that appear beyond the last mapped field will be ignored

}
Copy to Clipboard Toggle word wrap

48.8. 5.消息

Message 注解用于标识您的模型的类,它们将包含键值对字段。这种格式主要用于财务交换协议信息(修复)。不过,此注解可用于通过密钥识别数据的任何其他格式。密钥对值互相分隔,可以是一个特殊字符(如 tab delimitor (unicode 表示 : \u0009))或开始标题(unicode representation : \u0001)

*"FIX information"*
Copy to Clipboard Toggle word wrap

有关修复的更多信息可在此网站上找到:http://www.fixprotocol.org/ http://www.fixprotocol.org/要使用 FIX 消息,模型必须包含与根消息类关联的标头和 Trailer 类,这些类可以是 Order 类。这不是强制性,但当您使用 camel-bindy 和 camel-fix (基于快速Fix 项目 http://www.quickfixj.org/ )的修复网关时,将非常有用。

Expand
注解名称记录类型级别

消息

键值对

Expand
参数名称typeinfo

pairSeparator

字符串

mandatory - 可以是 '=' 或 ';' 或 'anything'

keyValuePairSeparair

字符串

mandatory - 可以是 '\u0001'、'\u0009'、'#' 或 'anything'

crlf

字符串

可选 - 可能的值 = WINDOWS、UNIX、MAC 或 custom;默认值 = WINDOWS - 允许定义要使用的回车字符。如果您指定之前列出的三个值,则输入(custom)的值将用作 CRLF 字符。

type

字符串

可选 - 定义消息类型(例如 FIX、EMX、…​)

version

字符串

可选 - 消息的版本(如 4.1)

isOrdered

布尔值

可选 - 默认值 = false - 允许在生成 FIX 消息时更改字段的顺序。此注解与模型的 message 类关联,必须声明一个时间。

case 1 : separator = 'u0001'

用于隔离 FIX 消息中的键值对字段的分隔符为 ASCII '01' 字符或 unicode 格式 '\u0001'。此字符必须再次转义,以避免 java 运行时错误。下面是一个示例:

8=FIX.4.1 9=20 34=1 35=0 49=INVMGR 56=BRKR 1=BE.CHM.001 11=CHM0001-01
22=4 ...
Copy to Clipboard Toggle word wrap

以及如何使用注解

FIX - 消息

@Message(keyValuePairSeparator = "=", pairSeparator = "\u0001", type="FIX", version="4.1")
public class Order {

}
Copy to Clipboard Toggle word wrap
*Look at test cases*
Copy to Clipboard Toggle word wrap

Tab、…​ 等 ASCII 字符无法在 WIKI 页面中显示。因此,请仔细查看 camel-bindy 的测试案例,以准确了解 FIX 消息的显示方式(src\test\data\fix\fix.txt)和 Order, Trailer, Header 类(src\test\java\org\apache\camel\dataformat\bindy\model\fix\fix.java)

48.9. 6.KeyValuePairField

KeyValuePairField 注释定义键值对字段的 属性。每个 KeyValuePairField 由一个标签(= key)及其关联的值(字符串、int、date、…​)标识,可选模式,以及字段(如果需要)

Expand
注解名称记录类型级别

KeyValuePairField

Key Value Pair - FIX

属性

Expand
参数名称typeinfo

tag

int

mandatory - 标识消息中字段的数字号 - 必须是唯一的

pattern

字符串

可选 - 默认值 = "" - 将用于格式化 Decimal、Date、…​

精度

int

可选 - 数字号 - 代表当拒绝号被格式化/parsed 时使用的精度

position

int

可选 - 当 FIX 消息中的键/标签的位置必须不同时,必须使用

required

布尔值

optional - default value = "false"

impliedDecimalSeparator

布尔值

Camel 2.11: 可选 - 默认值 = "false" - 如果指定位置有小点表示

case 1 : tag

此参数表示消息中字段的键

FIX 消息 - Tag

@Message(keyValuePairSeparator = "=", pairSeparator = "\u0001", type="FIX", version="4.1")
public class Order {

    @Link Header header;

    @Link Trailer trailer;

    @KeyValuePairField(tag = 1) // Client reference
    private String Account;

    @KeyValuePairField(tag = 11) // Order reference
    private String ClOrdId;

    @KeyValuePairField(tag = 22) // Fund ID type (Sedol, ISIN, ...)
    private String IDSource;

    @KeyValuePairField(tag = 48) // Fund code
    private String SecurityId;

    @KeyValuePairField(tag = 54) // Movement type ( 1 = Buy, 2 = sell)
    private String Side;

    @KeyValuePairField(tag = 58) // Free text
    private String Text;
}
Copy to Clipboard Toggle word wrap

案例 2:输出中的不同位置

如果我们将放置在 FIX 消息的标签/键必须按照预定义的顺序排序,则使用注释 @KeyValuePairField 的属性 'position'

FIX 消息 - Tag - sort

@Message(keyValuePairSeparator = "=", pairSeparator = "\\u0001", type = "FIX", version = "4.1", isOrdered = true)
public class Order {

    @Link Header header;

    @Link Trailer trailer;

    @KeyValuePairField(tag = 1, position = 1) // Client reference
    private String account;

    @KeyValuePairField(tag = 11, position = 3) // Order reference
    private String clOrdId;
}
Copy to Clipboard Toggle word wrap

48.10. 7.节

在修复固定长度记录消息中,通常会在信息 : 标头、正文和部分表示有不同的部分。注释 @Section 的目的是告知绑定模型的哪个类代表标题(= 第 1 部分)、正文(= 部分 2 节)和 footer (= 第 3 节)

此注解仅存在一个属性/参数。

Expand
注解名称记录类型级别

修复

Expand
参数名称typeinfo

number

int

标识部分位置的数字

案例 1:部分

标头部分的定义

FIX 消息 - 第 - Header

@Section(number = 1)
public class Header {

    @KeyValuePairField(tag = 8, position = 1) // Message Header
    private String beginString;

    @KeyValuePairField(tag = 9, position = 2) // Checksum
    private int bodyLength;
}
Copy to Clipboard Toggle word wrap

body 部分的定义

FIX 消息 - 第 - Body

@Section(number = 2)
@Message(keyValuePairSeparator = "=", pairSeparator = "\\u0001", type = "FIX", version = "4.1", isOrdered = true)
public class Order {

    @Link Header header;

    @Link Trailer trailer;

    @KeyValuePairField(tag = 1, position = 1) // Client reference
    private String account;

    @KeyValuePairField(tag = 11, position = 3) // Order reference
    private String clOrdId;
Copy to Clipboard Toggle word wrap

footer 部分的定义

FIX 消息 - 第 - Footer

@Section(number = 3)
public class Trailer {

    @KeyValuePairField(tag = 10, position = 1)
    // CheckSum
    private int checkSum;

    public int getCheckSum() {
        return checkSum;
    }
Copy to Clipboard Toggle word wrap

48.11. 8.OneToMany

注释 @OneToMany 的目的是允许使用 List<?& gt; 字段定义 POJO 类或包含重复组的记录。

*Restrictions OneToMany*
Copy to Clipboard Toggle word wrap

请注意,一个到许多绑定的绑定都不允许处理在层次结构的多个级别上定义的重复数据

在以下情况下,根据以下情况的关系:

  • 阅读包含重复组(=组 tags/keys)的修复消息
  • 使用重复数据生成 CSV
Expand
注解名称记录类型级别

OneToMany

all

属性

Expand
参数名称typeinfo

mappedTo

字符串

可选 - string - 与 Class> 的 List<Type 关联的类名称

问题单 1:生成带有重复数据的 CSV

以下是我们想要的 CSV 输出:

Claus,Ibsen,Camel in Action 1,2010,35
Claus,Ibsen,Camel in Action 2,2012,35
Claus,Ibsen,Camel in Action 3,2013,35
Claus,Ibsen,Camel in Action 4,2014,35
Copy to Clipboard Toggle word wrap

Remark:与本书的标题及其发布日期有关的重复数据,而姓氏、姓氏和年龄是通用的

和用于建模的类。Author 类包含 Book 的列表。

使用重复数据生成 CSV

@CsvRecord(separator=",")
public class Author {

    @DataField(pos = 1)
    private String firstName;

    @DataField(pos = 2)
    private String lastName;

    @OneToMany
    private List<Book> books;

    @DataField(pos = 5)
    private String Age;
}

public class Book {

    @DataField(pos = 3)
    private String title;

    @DataField(pos = 4)
    private String year;
}
Copy to Clipboard Toggle word wrap

非常简单!!

案例 2:读取修复消息,包含标签/密钥组

以下是希望在我们的模型中处理的消息:

8=FIX 4.19=2034=135=049=INVMGR56=BRKR
1=BE.CHM.00111=CHM0001-0158=this is a camel - bindy test
22=448=BE000124567854=1
22=548=BE000987654354=2
22=648=BE000999999954=3
10=220
Copy to Clipboard Toggle word wrap

标签 22、48 和 54 正在重复

和代码

阅读包含一组 tags/keys 组的 FIX 消息

public class Order {

    @Link Header header;

    @Link Trailer trailer;

    @KeyValuePairField(tag = 1) // Client reference
    private String account;

    @KeyValuePairField(tag = 11) // Order reference
    private String clOrdId;

    @KeyValuePairField(tag = 58) // Free text
    private String text;

    @OneToMany(mappedTo = "org.apache.camel.dataformat.bindy.model.fix.complex.onetomany.Security")
    List<Security> securities;
}

public class Security {

    @KeyValuePairField(tag = 22) // Fund ID type (Sedol, ISIN, ...)
    private String idSource;

    @KeyValuePairField(tag = 48) // Fund code
    private String securityCode;

    @KeyValuePairField(tag = 54) // Movement type ( 1 = Buy, 2 = sell)
    private String side;
}
Copy to Clipboard Toggle word wrap

48.12. 9.BindyConverter

注释 @BindyConverter 定义了要在字段级别使用转换器。提供的类必须实施 Format 接口。

@FixedLengthRecord(length = 10, paddingChar = ' ')
public static class DataModel {
    @DataField(pos =  1, length = 10, trim = true)
    @BindyConverter(CustomConverter.class)
    public String field1;
}

public static class CustomConverter implements Format<String> {
    @Override
    public String format(String object) throws Exception {
        return (new StringBuilder(object)).reverse().toString();
    }

    @Override
    public String parse(String string) throws Exception {
        return (new StringBuilder(string)).reverse().toString();
    }
}
Copy to Clipboard Toggle word wrap

48.13. 10.FormatFactories

注释 @FormatFactories 的目的是在记录级别定义一组转换器。提供的类必须实施 FormatFactoryInterface 接口。

@CsvRecord(separator = ",")
@FormatFactories({OrderNumberFormatFactory.class})
public static class Order {

    @DataField(pos = 1)
    private OrderNumber orderNr;

    @DataField(pos = 2)
    private String firstName;
}

public static class OrderNumber {
    private int orderNr;

    public static OrderNumber ofString(String orderNumber) {
        OrderNumber result = new OrderNumber();
        result.orderNr = Integer.valueOf(orderNumber);
        return result;
    }
}

public static class OrderNumberFormatFactory extends AbstractFormatFactory {

    {
        supportedClasses.add(OrderNumber.class);
    }

    @Override
    public Format<?> build(FormattingOptions formattingOptions) {
        return new Format<OrderNumber>() {
            @Override
            public String format(OrderNumber object) throws Exception {
                return String.valueOf(object.orderNr);
            }

            @Override
            public OrderNumber parse(String string) throws Exception {
                return OrderNumber.ofString(string);
            }
        };
    }
}
Copy to Clipboard Toggle word wrap

48.14. 支持的 Datatypes

DefaultFormatFactory 通过基于提供的 FormattingOptions 返回接口 FormatFactoryInterface 实例来格式化以下数据类型:

  • BigDecimal
  • BigInteger
  • 布尔值
  • Byte
  • 字符
  • Date
  • 枚举
  • 浮点值
  • 整数
  • LocalDate (自 2.18.0 起运行 8)
  • LocalDateTime (java 8, since 2.18.0)
  • localtime (java 8 since 2.18.0)
  • Long
  • 字符串

可以通过在使用的 registry 中提供 FactoryRegistry 实例(如 spring 或 JNDI)来覆盖 DefaultFormatFactory。

48.15. 使用 Java DSL

下一步包含与这个记录类型关联的 DataFormat bindy 类,并提供 Java 软件包名称作为参数。

例如,以下使用类 BindyCsvDataFormat (与 CSV 记录类型关联的类对应),该类使用 com.acme.model 软件包名称来初始化在这个软件包中配置的模型对象。

// Camel 2.15 or older (configure by package name)
DataFormat bindy = new BindyCsvDataFormat("com.acme.model");

 
// Camel 2.16 onwards (configure by class name)
DataFormat bindy = new BindyCsvDataFormat(com.acme.model.MyModel.class);
Copy to Clipboard Toggle word wrap

48.15.1. 设置区域设置

Bindy 支持在 dataformat 上配置区域设置,例如 

// Camel 2.15 or older (configure by package name)
BindyCsvDataFormat bindy = new BindyCsvDataFormat("com.acme.model");
// Camel 2.16 onwards (configure by class name)
BindyCsvDataFormat bindy = new BindyCsvDataFormat(com.acme.model.MyModel.class);

bindy.setLocale("us");
Copy to Clipboard Toggle word wrap

或者使用平台默认区域设置,然后使用 "default" 作为区域设置。请注意,这需要 Camel 2.14/2.13.3/2.12.5。

// Camel 2.15 or older (configure by package name)
BindyCsvDataFormat bindy = new BindyCsvDataFormat("com.acme.model");
// Camel 2.16 onwards (configure by class name)
BindyCsvDataFormat bindy = new BindyCsvDataFormat(com.acme.model.MyModel.class);

bindy.setLocale("default");
Copy to Clipboard Toggle word wrap

对于旧版本的版本,您可以按照如下所示使用 Java 代码来设置它

// Camel 2.15 or older (configure by package name)
BindyCsvDataFormat bindy = new BindyCsvDataFormat("com.acme.model");
// Camel 2.16 onwards (configure by class name)
BindyCsvDataFormat bindy = new BindyCsvDataFormat(com.acme.model.MyModel.class);

bindy.setLocale(Locale.getDefault().getISO3Country());
Copy to Clipboard Toggle word wrap

48.15.2. unmarshaling

from("file://inbox")
  .unmarshal(bindy)
  .to("direct:handleOrders");
Copy to Clipboard Toggle word wrap

另外,您可以使用命名的引用来指代数据格式,然后可以在 Registry 中定义,如 Spring XML 文件:

from("file://inbox")
  .unmarshal("myBindyDataFormat")
  .to("direct:handleOrders");
Copy to Clipboard Toggle word wrap

Camel 路由将提取 inbox 目录中的文件,将未编出 CSV 记录到模型对象集合中,并将集合
发送到由"handleOrders"引用的路由。

返回的集合是一个 Map 对象列表。列表中的每个映射都包含在 CSV 每行中汇总的模型对象。其背后的原因是 每行可以对应于多个对象。当您只期望一行返回一个对象时,这可能会造成混淆。

每个对象都可以使用其类名称来检索。

List<Map<String, Object>> unmarshaledModels = (List<Map<String, Object>>) exchange.getIn().getBody();

int modelCount = 0;
for (Map<String, Object> model : unmarshaledModels) {
  for (String className : model.keySet()) {
     Object obj = model.get(className);
     LOG.info("Count : " + modelCount + ", " + obj.toString());
  }
 modelCount++;
}

LOG.info("Total CSV records received by the csv bean : " + modelCount);
Copy to Clipboard Toggle word wrap

假设您要从此映射中提取单个 Order 对象以便在路由中处理,您可以使用 Splitter 和 Processor 的组合,如下所示:

from("file://inbox")
    .unmarshal(bindy)
    .split(body())
        .process(new Processor() {
            public void process(Exchange exchange) throws Exception {
                Message in = exchange.getIn();
                Map<String, Object> modelMap = (Map<String, Object>) in.getBody();
                in.setBody(modelMap.get(Order.class.getCanonicalName()));
            }
        })
        .to("direct:handleSingleOrder")
    .end();
Copy to Clipboard Toggle word wrap

请注意,Bindy 使用 CHARSET_NAME 属性或 CHARSET_NAME 标头(在 Exchange 界面中定义)来进行为 unmarshalling 收到的输入流的字符转换。在某些制作者(如 file-endpoint)中,您可以定义字符集。此制作者已经实现的字符集转换。有时,您需要在交换中删除此属性或标头,然后将其发送到 unmarshal。如果您没有删除转换,则可能需要两次执行转换可能会导致不必要的结果。

from("file://inbox?charset=Cp922")
  .removeProperty(Exchange.CHARSET_NAME)
  .unmarshal("myBindyDataFormat")
  .to("direct:handleOrders");
Copy to Clipboard Toggle word wrap

48.15.3. marshaling

要从模型对象集合生成 CSV 记录,请创建以下路由:

from("direct:handleOrders")
   .marshal(bindy)
   .to("file://outbox")
Copy to Clipboard Toggle word wrap

48.16. 使用 Spring XML

这非常容易使用 Spring 作为您首选的 DSL 语言,以声明要用于 camel-bindy 的路由。以下示例显示两个路由,第一条将从文件中选取记录,取消汇总内容并将其绑定到其模型。然后,结果会发送到 pojo(没有任何特殊情况),并将它们放入队列。

第二个路由将从队列中提取 pojos,并汇总内容,以生成包含 csv 记录的文件。上面的例子是使用 Camel 2.16 开始的。

Spring dsl

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://camel.apache.org/schema/spring
       http://camel.apache.org/schema/spring/camel-spring.xsd">

    <!-- Queuing engine - ActiveMq - work locally in mode virtual memory -->
    <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
        <property name="brokerURL" value="vm://localhost:61616"/>
    </bean>

    <camelContext xmlns="http://camel.apache.org/schema/spring">
        <dataFormats>
          <bindy id="bindyDataformat" type="Csv" classType="org.apache.camel.bindy.model.Order"/>
        </dataFormats>

        <route>
            <from uri="file://src/data/csv/?noop=true" />
            <unmarshal ref="bindyDataformat" />
            <to uri="bean:csv" />
            <to uri="activemq:queue:in" />
        </route>

        <route>
            <from uri="activemq:queue:in" />
            <marshal ref="bindyDataformat" />
            <to uri="file://src/data/csv/out/" />
        </route>
    </camelContext>
</beans>
Copy to Clipboard Toggle word wrap
注意

请验证您的模型类是否实现序列化,否则队列管理器将引发错误

48.17. 依赖项

要在 camel 路由中使用 Bindy,需要添加对 camel-bindy 的依赖来实施此数据格式。

如果您使用 maven,只需在 pom.xml 中添加以下内容,替换最新和最高版本的版本号(请参阅最新版本的下载页面)。

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-bindy</artifactId>
  <version>x.x.x</version>
</dependency>
Copy to Clipboard Toggle word wrap

第 49 章 将 OSGi 蓝图与 Camel 搭配使用

已创建一个用于 Blueprint 的自定义 XML 命名空间,以便让您充分利用 nice XML 死机。由于 Blueprint 自定义命名空间尚未标准化,但这个命名空间只能用于 Apache Aries Blueprint 实施,后者是 Apache Karaf 所用命名空间。

49.1. 概述

XML 模式大体与 Spring 的选项基本相同,因此所有引用 Spring XML 的文档中的 xml 代码段也适用于 Blueprint 路由。

以下是使用蓝图的简单路由定义:

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">

    <camelContext xmlns="http://camel.apache.org/schema/blueprint">
        <route>
            <from uri="timer:test" />
            <to uri="log:test" />
        </route>
    </camelContext>

</blueprint>
Copy to Clipboard Toggle word wrap

此时,支持的 xml 元素(专用于 Spring xml 语法)有一些限制:

  • beanPostProcessor 特定于 Spring,不允许

但是,当您在 OSGi 环境中部署应用程序时,使用蓝图有几个优点:

  • 当升级到新的 camel 版本时,您不必更改命名空间,因为正确的版本将根据捆绑包导入的 camel 软件包来选择。
  • 对自定义命名空间和捆绑包没有启动排序问题
  • 您可以使用 Blueprint 属性占位符

49.2. 使用 camel-blueprint

要在 OSGi 中利用 camel-blueprint,除了 camel-core 及其依赖软件包外,您还需要 Aries Blueprint 捆绑包和 camel-blueprint 捆绑包。

如果使用 Karaf,您可以使用名为 camel-blueprint 的功能,它将安装所有所需的捆绑包。

第 50 章 Bonita Component

作为 Camel 版本 2.19 可用

用于与远程 Bonita BPM 流程引擎通信。

50.1. URI 格式

bonita://[operation]?[options]
Copy to Clipboard Toggle word wrap

其中 operation 是要在 Bonita 上执行的特定操作。

50.2. 常规选项

Bonita 组件没有选项。

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

bonita:operation
Copy to Clipboard Toggle word wrap

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

50.2.1. 路径名(1 参数):

Expand
名称描述默认类型

operation

要使用 所需的操作

 

BonitaOperation

50.2.2. 查询参数(9 参数):

Expand
名称描述默认类型

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

hostname (consumer)

运行 Bonita 引擎的主机名

localhost

字符串

port (consumer)

服务器托管 Bonita 引擎的端口

8080

字符串

processName (consumer)

操作中涉及的进程的名称

 

字符串

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

同步 (高级)

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

false

布尔值

密码 (安全)

用于向 Bonita 引擎进行身份验证的密码。

 

字符串

username (security)

向 Bonita 引擎进行身份验证的用户名。

 

字符串

50.3. Spring Boot Auto-Configuration

组件支持 2 个选项,如下所示。

Expand
名称描述默认类型

camel.component.bonita.enabled

启用 bonita 组件

true

布尔值

camel.component.bonita.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

50.4. 正文内容

对于 startCase 操作,输入变量是从正文消息中检索。这个方法必须包含一个 Map<String,Serializable>。

50.5. 例子

以下示例在 Bonita 中启动新的问题单:

from("direct:start").to("bonita:startCase?hostname=localhost&amp;port=8080&amp;processName=TestProcess&amp;username=install&amp;password=install")
Copy to Clipboard Toggle word wrap

50.6. 依赖项

要在 Camel 路由中使用 Bonita,您需要添加实施该组件的 camel-bonita 的依赖项。

如果您使用 Maven,您只需在 pom.xml 中添加以下内容,将最新和最大版本的版本号替换(请参阅最新版本下载页面)。

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-bonita</artifactId>
  <version>x.x.x</version>
</dependency>
Copy to Clipboard Toggle word wrap

第 51 章 Boon DataFormat

作为 Camel 版本 2.16 可用

boon 是一个数据格式,它使用 Boon JSON marshalling 库将 JSON 有效负载分到 Java 对象,或将 JSON 对象聚合到 JSON 有效负载中。boon 旨在比当前使用的其他常见 解析器是一个简单而快速的 解析器。

51.1. 选项

Boon dataformat 支持 3 个选项,它们如下。

Expand
名称默认Java 类型描述

unmarshalTypeName

 

字符串

取消armshalling 时要使用的 java 类型的类名称

useList

false

布尔值

要取消与映射列表或 Pojo 列表相关的内容。

contentTypeHeader

false

布尔值

如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。

51.2. Spring Boot Auto-Configuration

组件支持 4 个选项,如下所示。

Expand
名称描述默认类型

camel.dataformat.boon.content-type-header

如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。

false

布尔值

camel.dataformat.boon.enabled

启用 boon 数据格式

true

布尔值

camel.dataformat.boon.unmarshal-type-name

取消armshalling 时要使用的 java 类型的类名称

 

字符串

camel.dataformat.boon.use-list

要取消与映射列表或 Pojo 列表相关的内容。

false

布尔值

ND

51.3. 使用 Java DSL

DataFormat boonDataFormat = new BoonDataFormat("com.acme.model.Person");

from("activemq:My.Queue")
  .unmarshal(boonDataFormat)
  .to("mqseries:Another.Queue");
Copy to Clipboard Toggle word wrap

51.4. 使用 Blueprint XML

<bean id="boonDataFormat" class="org.apache.camel.component.boon.BoonDataFormat">
  <argument value="com.acme.model.Person"/>
</bean>

<camelContext id="camel" xmlns="http://camel.apache.org/schema/blueprint">
  <route>
    <from uri="activemq:My.Queue"/>
    <unmarshal ref="boonDataFormat"/>
    <to uri="mqseries:Another.Queue"/>
  </route>
</camelContext>
Copy to Clipboard Toggle word wrap

51.5. 依赖项

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-boon</artifactId>
  <version>x.x.x</version>
</dependency>
Copy to Clipboard Toggle word wrap

第 52 章 box 组件

作为 Camel 版本 2.14 可用

Box 组件提供对可通过 https://github.com/box/box-java-sdk 访问的所有 Box.com API 的访问。它允许生成消息来上传和下载文件,创建、编辑和管理文件夹等。它还支持 API,允许轮询用户帐户以及企业帐户更改等。

box.com 要求使用 OAuth2.0 进行所有客户端应用程序身份验证。要使用您帐户的 camel-box,您需要在 Box.com 中创建一个新应用程序,地址为 https://developer.box.com。Box 应用的客户端 ID 和机密将允许访问需要当前用户的 Box API。用户访问令牌由最终用户的 API 生成和管理。

Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-box</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

52.1. 连接身份验证类型

Box 组件支持三种不同类型的身份验证的连接。

52.1.1. 标准身份验证

标准身份验证 使用 OAuth 2.0 三组身份验证过程 通过 Box.com 验证其连接。这种类型的身份验证可让 Box 受管用户和 外部用户 通过 Box 组件访问、编辑并保存其 Box 内容。

52.1.2. 应用程序企业身份验证

应用 企业身份验证 使用 OAuth 2.0 和 JSON Web 令牌(JWT),将其连接验证为 Box 应用的 服务帐户。这种类型的身份验证可让服务帐户访问、编辑并保存其 Box 应用的 Box 内容(通过 Box 组件)。

52.1.3. 应用程序用户身份验证

应用程序 用户身份验证 使用带有 JSON Web 令牌(JWT)的 OAuth 2.0,将其连接验证为 Box 应用的 App User。这种类型的身份验证可让 应用程序 用户访问、编辑并保存其 Box 内容(通过 Box 组件)。

52.2. 选框选项

Box 组件支持 2 个选项,它们如下所列。

Expand
名称描述默认类型

configuration (common)

使用共享配置

 

BoxConfiguration

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

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

box:apiName/methodName
Copy to Clipboard Toggle word wrap

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

52.2.1. 路径名(2 参数):

Expand
名称描述默认类型

apiName

需要 什么操作才能执行

 

BoxApiName

methodName

所选操作需要什么子操作

 

字符串

52.2.2. 查询参数(20 参数):

Expand
名称描述默认类型

clientId (common)

box 应用程序客户端 ID

 

字符串

enterpriseId (common)

用于 App Enterprise 的企业 ID。

 

字符串

inBody (common)

设置在 Exchange In Body 中传递的参数名称

 

字符串

userId (common)

用于应用程序用户的用户 ID。

 

字符串

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

httpParams (advanced)

自定义 HTTP 参数用于代理主机等设置

 

map

同步 (高级)

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

false

布尔值

accessTokenCache (security)

用于存储和检索访问令牌的自定义访问令牌。

 

IAccessTokenCache

clientSecret (security)

box 应用程序客户端 secret

 

字符串

encryptionAlgorithm (security)

JWT 加密算法的类型。支持 Algorithms: RSA_SHA_256 RSA_SHA_384 RSA_SHA_512

RSA_SHA_256

EncryptionAlgorithm

maxCacheEntries (security)

缓存中访问令牌的最大数量。

100

int

authenticationType (authentication)

用于连接的验证类型。身份验证类型:STANDARD_AUTHENTICATION - OAuth 2.0 (3-legged) SERVER_AUTHENTICATION - 带有 JSON Web 令牌的 OAuth 2.0

APP_USER_AUTHENTICATION

字符串

privateKeyFile (security)

生成 JWT 签名的私钥。

 

字符串

privateKeyPassword (security)

私钥的密码。

 

字符串

publicKeyId (security)

验证 JWT 签名的公钥 ID。

 

字符串

sslContextParameters (security)

使用 SSLContextParameters 配置安全性。

 

SSLContextParameters

userName (security)

box 用户名,提供 MUST

 

字符串

userPassword (security)

box 用户密码,如果未设置 authSecureStorage,或者在第一次调用时返回 null,则需要提供 MUST

 

字符串

52.3. Spring Boot Auto-Configuration

组件支持 17 个选项,如下所示。

Expand
名称描述默认类型

camel.component.box.configuration.access-token-cache

用于存储和检索访问令牌的自定义访问令牌。

 

IAccessTokenCache

camel.component.box.configuration.api-name

要执行的操作种类

 

BoxApiName

camel.component.box.configuration.authentication-type

用于连接的验证类型。身份验证类型:STANDARD_AUTHENTICATION - OAuth 2.0 (3-legged) SERVER_AUTHENTICATION - 带有 JSON Web 令牌的 OAuth 2.0

APP_USER_AUTHENTICATION

字符串

camel.component.box.configuration.client-id

box 应用程序客户端 ID

 

字符串

camel.component.box.configuration.client-secret

box 应用程序客户端 secret

 

字符串

camel.component.box.configuration.enterprise-id

用于 App Enterprise 的企业 ID。

 

字符串

camel.component.box.configuration.http-params

自定义 HTTP 参数用于代理主机等设置

 

map

camel.component.box.configuration.method-name

用于所选操作的子操作

 

字符串

camel.component.box.configuration.private-key-file

生成 JWT 签名的私钥。

 

字符串

camel.component.box.configuration.private-key-password

私钥的密码。

 

字符串

camel.component.box.configuration.public-key-id

验证 JWT 签名的公钥 ID。

 

字符串

camel.component.box.configuration.ssl-context-parameters

使用 SSLContextParameters 配置安全性。

 

SSLContextParameters

camel.component.box.configuration.user-id

用于应用程序用户的用户 ID。

 

字符串

camel.component.box.configuration.user-name

box 用户名,提供 MUST

 

字符串

camel.component.box.configuration.user-password

box 用户密码,如果未设置 authSecureStorage,或者在第一次调用时返回 null,则需要提供 MUST

 

字符串

camel.component.box.enabled

启用 box 组件

true

布尔值

camel.component.box.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

52.4. URI 格式

box:apiName/methodName
Copy to Clipboard Toggle word wrap

apiName 可以是以下之一:

  • 协作
  • 注释
  • event-logs
  • files
  • 文件夹
  • groups
  • 事件
  • search
  • tasks
  • users

52.5. 制作者端点:

制作者端点可以使用端点前缀,后跟下描述的端点名称和关联选项。简写别名可用于某些端点。端点 URI MUST 包含一个前缀。

不是必需的端点选项由 [] 表示。如果端点没有强制选项,则会提供一组 [] 选项 MUST。制作者端点也可以使用特殊选项 inBody ,它应当包含该端点选项的名称,其值将包含在 Camel Exchange In 消息中。

端点 URI 中都可以提供任何端点选项,或者在消息标头中动态提供。消息标头名称必须是 CamelBox.<option> 的格式。请注意, inBody 选项会覆盖消息标头,例如, Body=option 中的 endpoint 选项会覆盖 CamelBox.option 标头。

如果没有为端点 URI 中的选项 defaultRequest 提供值,则它将假定为 null。请注意,只有其它选项不满足匹配的端点时,才会使用 null 值。

如果是 Box API 错误,端点将使用 com.box.sdk.BoxAPIException 派生异常原因抛出 RuntimeCamelException。

52.5.1. 端点前缀 协作

有关 Box 协作的更多信息,请参阅 https://developer.box.com/reference#collaboration-object。 以下端点可以通过前缀 协作来调用, 如下所示:

box:collaborations/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

addFolderCollaboration

add

folderId、collaborator、role

com.box.sdk.BoxCollaboration

addFolderCollaborationByEmail

addByEmail

folderId, email, role

com.box.sdk.BoxCollaboration

deleteCollaboration

delete

collaborationId

 

getFolderCollaborations

协作

folderId

java.util.Collection

getPendingCollaborations

pendingCollaborations

 

java.util.Collection

getCollaborationInfo

info

collaborationId

com.box.sdk.BoxCollaboration.Info

updateCollaborationInfo

updateInfo

collaborationId, info

com.box.sdk.BoxCollaboration

用于 协作的URI 选项

Expand
名称类型

collaborationId

字符串

collaborator

com.box.sdk.BoxCollaborator

role

com.box.sdk.BoxCollaboration.Role

folderId

字符串

email

字符串

info

com.box.sdk.BoxCollaboration.Info

52.5.2. 端点前缀 注释

有关 Box 注释的更多信息,请参阅 https://developer.box.com/reference#comment-object。 以下端点可以通过前缀 注释 调用,如下所示:

box:comments/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

addFileComment

add

fileId, message

com.box.sdk.BoxFile

changeCommentMessage

updateMessage

commentId, message

com.box.sdk.BoxComment

deleteComment

delete

commentId

 

getCommentInfo

info

commentId

com.box.sdk.BoxComment.Info

getFileComments

注释

fileId

java.util.List

replyToComment

答复

commentId, message

com.box.sdk.BoxComment

用于 协作的URI 选项

Expand
名称类型

commentId

字符串

fileId

字符串

message

字符串

52.5.3. endpoint Prefix events-logs

有关 Box 事件日志的更多信息,请参阅 https://developer.box.com/reference#events。以下端点可以通过前缀 event-logs 调用,如下所示:

box:event-logs/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

getEnterpriseEvents

事件

位置, after, before, [types]

java.util.List

event-logs的 URI 选项

Expand
名称类型

position

字符串

结束后

Date

之前

Date

类型

com.box.sdk.BoxEvent.Types[]

52.5.4. 端点前缀 文件

有关 Box 文件的更多信息,请参阅 https://developer.box.com/reference#file-object。以下端点可以通过前缀 文件 调用,如下所示:

box:files/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

uploadFile

上传

parentFolderId, 内容, fileName, [created], [modified], [size], [listener]

com.box.sdk.BoxFile

downloadFile

下载

fileId, output, [rangeStart], [rangeEnd], [listener]

java.io.OutputStream

copyFile

复制

fileId, destinationFolderId, [newName]

com.box.sdk.BoxFile

moveFile

Move

fileId, destinationFolderId, [newName]

com.box.sdk.BoxFile

renameFile

重命名

fileId, newFileName

com.box.sdk.BoxFile

createFileSharedLink

link

fileId, access, [unshareDate], [permissions]

com.box.sdk.BoxSharedLink

deleteFile

delete

fileId

 

uploadNewFileVersion

uploadVersion

fileId, fileContent, [modified], [fileSize], [listener]

com.box.boxsdk.BoxFile

promoteFileVersion

promoteVersion

fileId, version

com.box.sdk.BoxFileVersion

getFileVersions

版本

fileId

java.util.Collection

downloadPreviousFileVersions

downloadVersion

fileId、version、output、[listener]

java.io.OutputStream

deleteFileVersion

deleteVersion

fileId, version

 

getFileInfo

info

fileId, 字段

com.box.sdk.BoxFile.Info

updateFileInfo

updateInfo

fileId, info

com.box.sdk.BoxFile

createFileMetadata

createMetadata

fileId, metadata, [typeName]

com.box.sdk.Metadata

getFileMetadata

metadata

fileId, [typeName]

com.box.sdk.Metadata

updateFileMetadata

updateMetadata

fileId, metadata

com.box.sdk.Metadata

deleteFileMetadata

deleteMetadata

fileId

 

getDownloadUrl

url

fileId

java.net.URL

getPreviewLink

预览

fileId

java.net.URL

getFileThumbnail

缩略图

fileId, fileType, minWidth, minHeight, maxWidth, maxHeight

byte[]

文件的URI 选项

Expand
名称类型

parentFolderId

字符串

content

java.io.InputStream

fileName

字符串

created

Date

modified

Date

size

Long

listener

com.box.sdk.ProgressListener

output

java.io.OutputStream

rangeStart

Long

rangeEnd

Long

outputStreams

java.io.OutputStream[]

destinationFolderId

字符串

newName

字符串

fields

String[]

info

com.box.sdk.BoxFile.Info

fileSize

Long

version

整数

access

com.box.sdk.BoxSharedLink.Access

unshareDate

Date

权限

com.box.sdk.BoxSharedLink.Permissions

fileType

com.box.sdk.BoxFile.ThumbnailFileType

minWidth

整数

minHeight

整数

maxWidth

整数

maxHeight

整数

metadata

com.box.sdk.Metadata

typeName

字符串

52.5.5. 端点前缀 文件夹

有关 Box 文件夹的更多信息,请参阅 https://developer.box.com/reference#folder-object。可以通过前缀 文件夹 调用以下端点,如下所示:

box:folders/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

getRootFolder

root

 

com.box.sdk.BoxFolder

createFolder

create

parentFolderId, folderName

com.box.sdk.BoxFolder

createFolder

create

parentFolderId, path

com.box.sdk.BoxFolder

copyFolder

复制

folderId, destinationfolderId, [newName]

com.box.sdk.BoxFolder

moveFolder

Move

folderId, destinationFolderId, newName

com.box.sdk.BoxFolder

renameFolder

重命名

folderId、newFolderName

com.box.sdk.BoxFolder

createFolderSharedLink

link

folderId、access、[unsharedDate], [permissions]

java.util.List

deleteFolder

delete

folderId

 

getFolder

folder

path

com.box.sdk.BoxFolder

getFolderInfo

info

folderId, 字段

com.box.sdk.BoxFolder.Info

getFolderItems

items

folderId, offset, limit, 字段

java.util.List

updateFolderInfo

updateInfo

folderId, info

com.box.sdk.BoxFolder

文件夹的 URI Options

Expand
名称类型

path

String[]

folderId

字符串

offset

Long

limit

Long

fields

String[]

parentFolderId

字符串

folderName

字符串

destinationFolderId

字符串

newName

字符串

newFolderName

字符串

info

字符串

access

com.box.sdk.BoxSharedLink.Access

unshareDate

Date

权限

com.box.sdk.BoxSharedLink.Permissions

52.5.6. 端点前缀 组

有关 Box 组的更多信息,请参阅 https://developer.box.com/reference#group-object。以下端点可以通过前缀  调用,如下所示:

box:groups/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

createGroup

create

名称, [provenance, externalSyncIdentifier, description, invitabilityLevel, memberViewabilityLevel]

com.box.sdk.BoxGroup

addGroupMembership

createMembership

GroupId, userId, role

com.box.sdk.BoxGroupMembership

deleteGroup

delete

groupId

 

getAllGroups

groups

 

java.util.Collection

getGroupInfo

info

groupId

com.box.sdk.BoxGroup.Info

updateGroupInfo

updateInfo

groupId, groupInfo

com.box.sdk.BoxGroup

addGroupMembership

addMembership

GroupId, userId, role

com.box.sdk.BoxGroupMembership

deleteGroupMembership

deleteMembership

groupMembershipId

 

getGroupMemberships

成员资格

groupId

java.uti.Collection

getGroupMembershipInfo

membershipInfo

groupMemebershipId

com.box.sdk.BoxGroup.Info

updateGroupMembershipInfo

updateMembershipInfo

groupMemebershipId, info

com.box.sdk.BoxGroupMembership

组的 URI 选项 

Expand
名称类型

name

字符串

groupId

字符串

userId

字符串

role

com.box.sdk.BoxGroupMembership.Role

groupMembershipId

字符串

info

com.box.sdk.BoxGroupMembership.Info

52.5.7. endpoint Prefix search

有关 Box 搜索 API 的更多信息,请参阅 https://developer.box.com/reference#searching-for-content。 可以通过前缀 搜索 调用以下端点,如下所示:

box:search/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

searchFolder

search

folderId, query

java.util.Collection

用于 搜索的URI 选项

Expand
名称类型

folderId

字符串

query

字符串

52.5.8. 端点前缀 任务

有关 Box 任务的详情,请参考 https://developer.box.com/reference#task-object-1。以下端点可以通过前缀 任务 调用,如下所示:

box:tasks/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

addFileTask

add

fileId, action, dueAt, [message]

com.box.sdk.BoxUser

deleteTask

delete

taskId

 

getFileTasks

tasks

fileId

java.util.List

getTaskInfo

info

taskId

com.box.sdk.BoxTask.Info

updateTaskInfo

updateInfo

TaskID, info

com.box.sdk.BoxTask

addAssignmentToTask

addAssignment

TaskID, assignTo

com.box.sdk.BoxTask

deleteTaskAssignment

deleteAssignment

taskAssignmentId

 

getTaskAssignments

分配

taskId

java.util.List

getTaskAssignmentInfo

assignmentInfo

taskAssignmentId

com.box.sdk.BoxTaskAssignment.Info

任务的URI 选项

Expand
名称类型

fileId

字符串

action

com.box.sdk.BoxTask.Action

dueAt

Date

message

字符串

taskId

字符串

info

com.box.sdk.BoxTask.Info

assignTo

com.box.sdk.BoxUser

taskAssignmentId

字符串

52.5.9. 端点前缀 用户

有关 Box 用户的详情请参考 https://developer.box.com/reference#user-object。以下端点可使用前缀 用户 调用,如下所示:

box:users/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

getCurrentUser

currentUser

 

com.box.sdk.BoxUser

getAllEnterpriseOrExternalUsers

users

filterTerm, [fields]

com.box.sdk.BoxUser

createAppUser

create

name, [params]

com.box.sdk.BoxUser

createEnterpriseUser

create

login, name, [params]

com.box.sdk.BoxUser

deleteUser

delete

userid, notifyUser, force

 

getUserEmailAlias

emailAlias

userId

com.box.sdk.BoxUser

deleteUserEmailAlias

deleteEmailAlias

userId, emailAliasId

java.util.List

getUserInfo

info

userId

com.box.sdk.BoxUser.Info

updateUserInfo

updateInfo

userid, info

com.box.sdk.BoxUser

moveFolderToUser

-

userId, sourceUserId

com.box.sdk.BoxFolder.Info

用户的URI 选项

Expand
名称类型

defaultRequest

com.box.restclientv2.requestsbase.BoxDefaultRequestObject

emailAliasRequest

com.box.boxjavalibv2.requests.requestobjects.BoxEmailAliasRequestObject

emailId

字符串

filterTerm

字符串

folderId

字符串

simpleUserRequest

com.box.boxjavalibv2.requests.requestobjects.BoxSimpleUserRequestObject

userDeleteRequest

com.box.boxjavalibv2.requests.requestobjects.BoxUserDeleteRequestObject

userId

字符串

userRequest

com.box.boxjavalibv2.requests.requestobjects.BoxUserRequestObject

userUpdateLoginRequest

com.box.boxjavalibv2.requests.requestobjects.BoxUserUpdateLoginRequestObject

52.6. 消费者端点:

有关 Box 事件的更多信息,请参阅 https://developer.box.com/reference#events。消费者端点只能使用端点前缀 事件,如下一示例所示。

box:events/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

事件

 

[startingPosition]

com.box.sdk.BoxEvent

事件的 URI 选项 

Expand
名称类型

startingPosition

Long

52.7. 邮件标题

任何选项都可以在带有 CamelBox. 前缀的制作者端点的消息标头中提供。

52.8. 邮件正文

所有结果消息正文都使用 Box Java SDK 提供的对象。producer 端点可以在 inBody endpoint 参数中为传入消息正文指定选项名称。

52.9. 配置组件并启用身份验证

要使用 Box 进行身份验证,如下例所示在组件上设置身份验证属性:

BoxConfiguration configuration = new BoxConfiguration();
configuration.setClientId("clientId");
configuration.setClientSecret("clientSecret");
configuration.setUserName("userName");
configuration.setUserPassword("userPassword");

// add BoxComponent to Camel context
BoxComponent component = new BoxComponent(context);
component.setConfiguration(configuration);
context.addComponent("box", component);
Copy to Clipboard Toggle word wrap

52.10. Samples

以下路由将新文件上传到用户的根目录:

from("file:...")
    .to("box://files/upload/inBody=fileUploadRequest");
Copy to Clipboard Toggle word wrap

以下路由轮询用户的帐户以进行更新:

from("box://events/listen?startingPosition=-1")
    .to("bean:blah");
Copy to Clipboard Toggle word wrap

以下路由使用带有动态标头选项的制作者。 fileId 属性具有 Box 文件 id,output 属性具有文件内容的输出流,因此它们被分配到 CamelBox.fileId 标头和 CamelBox.output 标头,如下所示:

from("direct:foo")
    .setHeader("CamelBox.fileId", header("fileId"))
    .setHeader("CamelBox.output", header("output"))
    .to("box://files/download")
    .to("file://...");
Copy to Clipboard Toggle word wrap

第 53 章 Braintree 组件

作为 Camel 2.17 版提供

Braintree 组件提供对通过 Java SDK 引进 Braintree 支付 的访问。

所有客户端应用程序都需要 API 凭证来处理付款。要在您的帐户中使用 camel-braintree,您需要创建新的 Sandbox 或 Production 帐户。

Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-braintree</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

 

53.1. Braintree 选项

Braintree 组件支持 2 个选项,它们如下所列。

Expand
名称描述默认类型

configuration (common)

使用共享配置

 

BraintreeConfiguration

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

Braintree 端点使用 URI 语法配置:

braintree:apiName/methodName
Copy to Clipboard Toggle word wrap

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

53.1.1. 路径名(2 参数):

Expand
名称描述默认类型

apiName

需要 什么操作才能执行

 

BraintreeApiName

methodName

用于所选操作的子操作

 

字符串

53.1.2. 查询参数(14 参数):

Expand
名称描述默认类型

environment (common)

环境 Either SANDBOX 或 PRODUCTION

 

字符串

inBody (common)

设置在 Exchange In Body 中传递的参数名称

 

字符串

merchantId (common)

Braintree 提供的 merchant id。

 

字符串

privateKey (common)

Braintree 提供的私钥。

 

字符串

publicKey (common)

Braintree 提供的公钥。

 

字符串

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

accessToken (高级)

争取另一人授予的访问令牌,以代表其处理事务。用于替代环境、merchant id、公钥和私钥字段。

 

字符串

httpReadTimeout (advanced)

为 http 调用设置读取超时。

 

整数

同步 (高级)

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

false

布尔值

httpLogLevel (logging)

为 http 调用设置日志记录级别,请参阅 java.util.logging.Level

 

字符串

proxyHost (proxy)

代理主机

 

字符串

proxyPort (proxy)

代理端口

 

整数

53.2. Spring Boot Auto-Configuration

组件支持 14 个选项,它们如下所列。

Expand
名称描述默认类型

camel.component.braintree.configuration.access-token

争取另一人授予的访问令牌,以代表其处理事务。用于替代环境、merchant id、公钥和私钥字段。

 

字符串

camel.component.braintree.configuration.api-name

要执行的操作种类

 

BraintreeApiName

camel.component.braintree.configuration.environment

环境 Either SANDBOX 或 PRODUCTION

 

字符串

camel.component.braintree.configuration.http-log-level

为 http 调用设置日志记录级别,请参阅 java.util.logging.Level

 

级别

camel.component.braintree.configuration.http-log-name

设置日志类别,以记录 http 调用,默认为 "Braintree"

 

字符串

camel.component.braintree.configuration.http-read-timeout

为 http 调用设置读取超时。

 

整数

camel.component.braintree.configuration.merchant-id

Braintree 提供的 merchant id。

 

字符串

camel.component.braintree.configuration.method-name

用于所选操作的子操作

 

字符串

camel.component.braintree.configuration.private-key

Braintree 提供的私钥。

 

字符串

camel.component.braintree.configuration.proxy-host

代理主机

 

字符串

camel.component.braintree.configuration.proxy-port

代理端口

 

整数

camel.component.braintree.configuration.public-key

Braintree 提供的公钥。

 

字符串

camel.component.braintree.enabled

启用 braintree 组件

true

布尔值

camel.component.braintree.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

53.3. URI 格式

 

braintree://endpoint-prefix/endpoint?[options]
Copy to Clipboard Toggle word wrap

 

端点前缀可以是以下之一:

  • addOn
  • address
  • clientToken
  • creditCardverification
  • customer
  • 折扣
  • dispute
  • documentUpload
  • merchantAccount
  • paymentmethod
  • paymentmethodNonce
  • plan
  • 报告
  • settlementBatchSummary
  • subscription
  • transaction
  • webhookNotification

 

53.4. BraintreeComponent

Braintree 组件可使用以下选项进行配置。可以使用组件的 bean 属性 配置 org.apache.camel.component.braintree.BraintreeConfiguration 来提供这些选项。

Expand
选项类型描述

环境

字符串

指定请求应定向到 - sandbox 或 production 的位置

merchantId

字符串

网关帐户的唯一标识符,与merchant 帐户 ID 不同

publicKey

字符串

用户特定的公共标识符

privateKey

字符串

用户特定的安全标识符不应共享 - 即使与我们共享!

accessToken

字符串

使用 Braintree Auth 授予令牌,以便它们能够代表处理事务。用于代替环境、merchantId、publicKey 和 privateKey 选项。

以上所有选项都由 Braintree 支付提供

53.5. 制作者端点:

制作者端点可以使用端点前缀,后跟下描述的端点名称和关联选项。简写别名可用于某些端点。端点 URI MUST 包含一个前缀。

不是必需的端点选项由 [] 表示。如果端点没有强制选项,则会提供一组 [] 选项 MUST。制作者端点也可以使用特殊选项 inBody ,它应当包含该端点选项的名称,其值将包含在 Camel Exchange In 消息中。

端点 URI 中都可以提供任何端点选项,或者在消息标头中动态提供。消息标头名称必须是 CamelBraintree.<option> 的格式。请注意, inBody 选项会覆盖消息标头,例如, Body=option 中的 endpoint 选项会覆盖 CamelBraintree.option 标头。

有关端点和选项的更多信息,请参阅 https://developers.braintreepayments.com/reference/overview的 Braintree 参考。

 

53.5.1. 端点前缀 addOn

以下端点可以通过前缀 addOn 来调用,如下所示:

 

braintree://addOn/endpoint
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

all

 

 

List<com.braintreegateway.Addon>

53.5.2. 端点前缀 地址

可以通过前缀 地址 调用以下端点,如下所示:

 

braintree://address/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

create

 

customerId, request

com.braintreegateway.Result<com.braintreegateway.Address>

delete

 

customerId, id

com.braintreegateway.Result<com.braintreegateway.Address> 

find

 

customerId, id

com.braintreegateway.Address

update

 

customerId, id, request

com.braintreegateway.Result<com.braintreegateway.Address> 

地址的 URI 选项 

Expand
名称类型

customerId

字符串

Request (请求)

com.braintreegateway.AddressRequest

id

字符串

53.5.3. 端点前缀 clientToken

以下端点可以通过前缀 clientToken 调用,如下所示:

 

braintree://clientToken/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

generate

 

 Request (请求)

字符串

clientToken的 URI 选项

Expand
名称类型

Request (请求)

com.braintreegateway.ClientTokenrequest

53.5.4. 端点前缀 creditCardVerification

以下端点可以通过前缀 creditCardverification 调用,如下所示:

 

braintree://creditCardVerification/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

find

 

 id

com.braintreegateway.CreditCardVerification

search

 

query

com.braintreegateway.ResourceCollection<com.braintreegateway.CreditCardVerification>

贡献度的 URI 选项

Expand
名称类型

id

字符串

query

com.braintreegateway.CreditCardVerificationSearchRequest

53.5.5. 端点前缀 客户

以下端点可以通过前缀 客户 调用,如下所示:

 

braintree://customer/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

all

 

 

 

create

 

Request (请求)

com.braintreegateway.Result<com.braintreegateway.Customer>

delete

 

id

com.braintreegateway.Result<com.braintreegateway.Customer>

find

 

id

com.braintreegateway.Customer

search

 

query

com.braintreegateway.ResourceCollection<com.braintreegateway.Customer>

update

 

id, request

com.braintreegateway.Result<com.braintreegateway.Customer>

客户的URI 选项

Expand
名称类型

id

字符串

Request (请求)

com.braintreegateway.CustomerRequest

query

com.braintreegateway.CustomerSearchRequest

53.5.6. 端点前缀 折扣

以下端点可以通过前缀 折扣 调用,如下所示:

 

braintree://discount/endpoint
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

all

 

 

List<com.braintreegateway.Discount>

+
Copy to Clipboard Toggle word wrap
+
Copy to Clipboard Toggle word wrap

53.5.7. 端点前缀 dispute

以下端点可以通过前缀 dispute 调用  如下所示:

braintree://dispute/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

accept

 

id

com.braintreegateway.Result

addFileEvidence

 

disputeId, documentId

com.braintreegateway.Result<DisputeEvidence>

addFileEvidence

 

disputeId, fileEvidenceRequest

com.braintreegateway.Result<DisputeEvidence>

addTextEvidence

 

disputeId, content

com.braintreegateway.Result<DisputeEvidence>

addTextEvidence

 

disputeId, textEvidenceRequest

com.braintreegateway.Result<DisputeEvidence>

完成

 

id

com.braintreegateway.Result

find

 

id

com.braintreegateway.Dispute

removeEvidence

 

id

com.braintreegateway.Result

search

 

disputeSearchRequest

com.braintreegateway.PaginatedCollection<com.braintreegateway.Dispute>

用于 争议的 URI 选项

Expand
名称类型

id

字符串

disputeId

字符串

documentId

字符串

fileEvidenceRequest

com.braintreegateway.FileEvidenceRequest

content

字符串

 

textEvidenceRequest

com.braintreegateway.TextEvidenceRequest

disputeSearchRequest

53.5.8. 端点前缀 documentUpload

以下端点可使用前缀 documentUpload 调用,如下所示:

braintree://documentUpload/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

create

 

Request (请求)

com.braintreegateway.Result<com.braintreegateway.DocumentUpload>

documentUpload的 URI Options

Expand
名称类型

Request (请求)

com.braintreegateway.DocumentUploadRequest

53.5.9. 端点前缀 merchantAccount

以下端点可以通过前缀 merchantAccount 调用,如下所示:

 

braintree://merchantAccount/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

create

 

Request (请求)

com.braintreegateway.Result<com.braintreegateway.MerchantAccount>

createForCurrency

 

currencyRequest

com.braintreegateway.Result<com.braintreegateway.MerchantAccount>

find

 

id

com.braintreegateway.MerchantAccount

update

 

id, request

com.braintreegateway.Result<com.braintreegateway.MerchantAccount>

merchantAccount的 URI 选项

Expand
名称类型

id

字符串

Request (请求)

com.braintreegateway.MerchantAccountRequest

currencyRequest

com.braintreegateway.MerchantAccountCreateForCurrencyRequest

53.5.10. 端点前缀 paymentMethod

以下端点可以使用前缀 payment Method 调用 ,如下所示:

 

braintree://paymentMethod/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

create

 

Request (请求)

com.braintreegateway.Result<com.braintreegateway.PaymentMethod>

delete

 

令牌, deleteRequest

com.braintreegateway.Result<com.braintreegateway.PaymentMethod>

find

 

token

com.braintreegateway.PaymentMethod

update

 

令牌, 请求

com.braintreegateway.Result<com.braintreegateway.PaymentMethod>

支付Method的 URI 选项

Expand
名称类型

token

字符串

Request (请求)

com.braintreegateway.PaymentMethodRequest

deleteRequest

com.braintreegateway.PaymentMethodDeleteRequest

53.5.11. 端点前缀 paymentMethodNonce

以下端点可以使用前缀 paymentMethodNonce 调用,如下所示:

 

braintree://paymentMethodNonce/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

create

 

paymentMethodToken

com.braintreegateway.Result<com.braintreegateway.PaymentMethodNonce>

find

 

paymentMethodNonce

com.braintreegateway.PaymentMethodNonce

支付MethodNonce的 URI 选项

Expand
名称类型

paymentMethodToken

字符串

paymentMethodNonce

字符串

53.5.12. 端点前缀 计划

以下端点可以通过前缀 计划 调用,如下所示:

 

braintree://plan/endpoint
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

all

 

 

List<com.braintreegateway.Plan>

53.5.13. 端点前缀 报告

以下端点可使用前缀 报告 调用,如下所示:

braintree://plan/report?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

transactionLevelFees

 

 Request (请求)

com.braintreegateway.Result<com.braintreegateway.TransactionLevelFeeReport>

报告的 URI Options 

Expand
名称类型

Request (请求)

com.braintreegateway.TransactionLevelFeeReportRequest

53.5.14. 端点前缀 settlementBatchSummary

以下端点可以通过前缀 settlement BatchBatchBatchmary 调用,如下所示:

 

braintree://settlementBatchSummary/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

generate

 

 Request (请求)

com.braintreegateway.Result<com.braintreegateway.SettlementBatchSummary>

settlement BatchSummary 的URI 选项

Expand
名称类型

settlementDate

日历

groupByCustomField

字符串

53.5.15. 端点前缀 订阅

以下端点可以通过前缀 订阅 调用,如下所示:

 

braintree://subscription/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

取消

 

 id

 com.braintreegateway.Result<com.braintreegateway.Subscription>

create

 

Request (请求)

com.braintreegateway.Result<com.braintreegateway.Subscription>

delete

 

customerId, id

com.braintreegateway.Result<com.braintreegateway.Subscription>

find

 

id

com.braintreegateway.Subscription

retryCharge

 

subscriptionId, number

com.braintreegateway.Result<com.braintreegateway.Transaction>

search

 

searchRequest

com.braintreegateway.ResourceCollection<com.braintreegateway.Subscription>

update

 

id, request

com.braintreegateway.Result<com.braintreegateway.Subscription>

订阅的URI 选项

Expand
名称类型

id

字符串

Request (请求)

com.braintreegateway.SubscriptionRequest

customerId

字符串

subscriptionId

字符串

amount

BigDecimal

searchRequest

com.braintreegateway.SubscriptionSearchRequest.

 

53.5.16. 端点前缀 事务

以下端点可以通过前缀 事务 调用,如下所示:

 

braintree://transaction/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

cancelRelease

 

id

com.braintreegateway.Result<com.braintreegateway.Transaction>

cloneTransaction

 

id, cloneRequest

com.braintreegateway.Result<com.braintreegateway.Transaction>

贡献度

 

Request (请求)

com.braintreegateway.Result<com.braintreegateway.Transaction>

find

 

id

com.braintreegateway.Transaction

holdInEscrow

 

id

com.braintreegateway.Result<com.braintreegateway.Transaction>

releaseFromEscrow

 

id

com.braintreegateway.Result<com.braintreegateway.Transaction>

退款(ref)

 

id、amount、refRequest

com.braintreegateway.Result<com.braintreegateway.Transaction>

sale

 

Request (请求)

com.braintreegateway.Result<com.braintreegateway.Transaction>

search

 

query

com.braintreegateway.ResourceCollection<com.braintreegateway.Transaction>

submitForPartialSettlement

 

ID、数量

com.braintreegateway.Result<com.braintreegateway.Transaction>

submitForSettlement

 

ID、数量、请求

com.braintreegateway.Result<com.braintreegateway.Transaction>

voidTransaction

 

id

com.braintreegateway.Result<com.braintreegateway.Transaction>

事务的 URI 选项 

Expand
名称类型

id

字符串

Request (请求)

com.braintreegateway.TransactionCloneRequest

cloneRequest

com.braintreegateway.TransactionCloneRequest

refundRequest

com.braintreegateway.TransactionRefundRequest

amount

BigDecimal

query

com.braintreegateway.TransactionSearchRequest

53.5.17. 端点前缀 WebhookNotification

以下端点可以通过前缀 webhookNotification 来调用,如下所示:

 

braintree://webhookNotification/endpoint?[options]
Copy to Clipboard Toggle word wrap
Expand
端点简写别名选项结果 Body 类型

parse

 

 签名, 有效负载

com.braintreegateway.WebhookNotification

验证

 

挑战

字符串

WebhookNotification的 URI 选项

Expand
名称类型

签名

字符串

有效负载

字符串

挑战

字符串

 

53.6. 消费者端点

任何制作者端点都可用作消费者端点。消费者端点可以使用 Scheduled Poll Consumer Options 和 consumer. 前缀来调度端点调用。默认情况下,返回数组或集合的 Consumer 端点将为每个元素生成一个交换,并且每个交换将执行一次其路由。要更改此行为,请使用属性 consumer.splitResults=true 为整个列表或数组返回单个交换。 

53.7. 消息标头

任何 URI 选项都可以在具有 CamelBraintree. 前缀的生产端点的消息标头中提供。

53.8. 邮件正文

所有结果消息正文都使用 Braintree Java SDK 提供的对象。producer 端点可以在 inBody endpoint 参数中为传入消息正文指定选项名称。

 

 

53.9. 例子

蓝图(Blueprint)

<?xml version="1.0"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
           xsi:schemaLocation="
             http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.0.0.xsd
             http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
             http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">


    <cm:property-placeholder id="placeholder" persistent-id="camel.braintree">
    </cm:property-placeholder>

    <bean id="braintree" class="org.apache.camel.component.braintree.BraintreeComponent">
        <property name="configuration">
            <bean class="org.apache.camel.component.braintree.BraintreeConfiguration">
                <property name="environment" value="${environment}"/>
                <property name="merchantId" value="${merchantId}"/>
                <property name="publicKey" value="${publicKey}"/>
                <property name="privateKey" value="${privateKey}"/>
            </bean>
        </property>
    </bean>

    <camelContext trace="true" xmlns="http://camel.apache.org/schema/blueprint" id="braintree-example-context">
        <route id="braintree-example-route">
            <from uri="direct:generateClientToken"/>
            <to uri="braintree://clientToken/generate"/>
            <to uri="stream:out"/>
        </route>
    </camelContext>

</blueprint>
Copy to Clipboard Toggle word wrap

53.10. 另请参阅

* 配置 Camel * 组件 * Endpoint * Getting Started

 

 

第 54 章 浏览组件

作为 Camel 版本 1.3 提供

Browse 组件提供了一个简单的 BrowsableEndpoint,可用于测试、可视化工具或调试。发送到端点的交换都可用于浏览。

54.1. URI 格式

browse:someName[?options]
Copy to Clipboard Toggle word wrap

其中 someName 可以是唯一标识端点的任意字符串。

54.2. 选项

Browse 组件没有选项。

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

browse:name
Copy to Clipboard Toggle word wrap

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

54.2.1. 路径名(1 参数):

Expand
名称描述默认类型

name

必需 A 名称,可以是任何可唯一标识端点的字符串

 

字符串

54.2.2. 查询参数(4 参数):

Expand
名称描述默认类型

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN/ERROR 级别并忽略。

false

布尔值

exceptionHandler (consumer)

要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN/ERROR 级别记录并忽略。

 

ExceptionHandler

exchangePattern (consumer)

在创建交换时设置默认交换模式。

 

ExchangePattern

同步 (高级)

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

false

布尔值

54.3. 示例

在下面的路由中,我们插入一个 浏览: 组件可以浏览要通过的交换:

from("activemq:order.in").to("browse:orderReceived").to("bean:processOrder");
Copy to Clipboard Toggle word wrap

现在,我们可以检查 Java 代码内接收的交换:

private CamelContext context;

public void inspectRecievedOrders() {
    BrowsableEndpoint browse = context.getEndpoint("browse:orderReceived", BrowsableEndpoint.class);
    List<Exchange> exchanges = browse.getExchanges();

    // then we can inspect the list of received exchanges from Java
    for (Exchange exchange : exchanges) {
        String payload = exchange.getIn().getBody();
        // do something with payload
    }
}
Copy to Clipboard Toggle word wrap

54.4. 另请参阅

  • 配置 Camel
  • 组件
  • 端点
  • 开始使用

第 55 章 EHCache 组件(已弃用)

作为 Camel 版本 2.1 提供

缓存 组件允许您将 EHCache 用作缓存实施来执行缓存操作。缓存本身是按需创建的,或者该名称的缓存已经存在,那么只需使用其原始设置即可使用它。

此组件支持基于制作者和事件的消费者端点。

缓存使用者是基于事件的消费者,可用于侦听和响应特定的缓存活动。如果您需要从预先存在的缓存执行选择,请使用为缓存组件定义的处理器。

Maven 用户需要将以下依赖项添加到其 pom.xml 中:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-cache</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

55.1. URI 格式

cache://cacheName[?options]
Copy to Clipboard Toggle word wrap

您可以以以下格式在 URI 中附加查询选项 ?option =value&option=#beanRef&…​

55.2. 选项

EHCache 组件支持 4 个选项,它们如下所列。

Expand
名称描述默认类型

cacheManagerFactory (advanced)

使用给定的 CacheManagerFactory 创建 CacheManager。默认情况下,使用 DefaultCacheManagerFactory。

 

CacheManagerFactory

configuration (common)

设置缓存配置

 

CacheConfiguration

configurationFile (common)

设置 ehcache.xml 文件的位置,以便从 classpath 或文件系统加载。默认情况下,该文件从 classpath:ehcache.xml 加载

classpath:ehcache.xml

字符串

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

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

cache:cacheName
Copy to Clipboard Toggle word wrap

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

55.2.1. 路径名(1 参数):

Expand
名称描述默认类型

cacheName

缓存 所需的 名称

 

字符串

55.2.2. 查询参数(19 参数):

Expand
名称描述默认类型

diskExpiryThreadInterval Seconds (common)

运行磁盘到期线程之间的秒数。

 

long

diskPersistent (common)

磁盘存储是否会在应用程序重启之间保留。

false

布尔值

diskStorePath (common)

弃用的 此参数将被忽略。CacheManager 使用 setter 注入来设置它。

 

字符串

eternal (common)

设定元素是否声音。如果发往,则忽略超时,且元素永远不会过期。

false

布尔值

key (common)

要使用的默认密钥。如果在消息标头中提供了密钥,则标头中的密钥优先使用。

 

字符串

maxElementsInMemory (common)

在内存中保存的元素数量。

1000

int

memoryStoreEvictionPolicy (common)

达到内存中最多元素数时要使用的驱除策略。策略会定义要删除的元素。LRU - Lest Recently Used LFU - Lest Frently Used FIFO - First In First Out

LFU

MemoryStoreEviction Policy

objectCache (common)

是否打开允许将非序列化对象存储在缓存中。如果这个选项被启用,则无法对磁盘启用溢出。

false

布尔值

operation (common)

要使用的默认缓存操作。如果消息标头中的操作,则来自标头的操作将优先使用。

 

字符串

overflowToDisk (common)

指定缓存是否为磁盘溢出

true

布尔值

timeToIdleSeconds (common)

元素到期前访问之间的最大时间

300

long

timeToLiveSeconds (common)

创建时间和何时元素之间的最长时间。仅当元素不是框架时,才会使用

300

long

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

cacheLoaderRegistry (advanced)

使用 CacheLoaderRegistry 配置缓存加载程序

 

CacheLoaderRegistry

cacheManagerFactory (advanced)

要使用自定义 CacheManagerFactory 来创建该端点要使用的 CacheManager。默认情况下,会使用组件上配置的 CacheManagerFactory。

 

CacheManagerFactory

eventListenerRegistry (advanced)

使用 CacheEventListenerRegistry 配置事件监听程序

 

CacheEventListener Registry

同步 (高级)

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

false

布尔值

55.3. Spring Boot Auto-Configuration

组件支持 17 个选项,如下所示。

Expand
名称描述默认类型

camel.component.cache.cache-manager-factory

使用给定的 CacheManagerFactory 创建 CacheManager。默认情况下,使用 DefaultCacheManagerFactory。选项是一个 org.apache.camel.component.cache.CacheManagerFactory 类型。

 

字符串

camel.component.cache.configuration-file

设置 ehcache.xml 文件的位置,以便从 classpath 或文件系统加载。默认情况下,该文件从 classpath:ehcache.xml 加载

classpath:ehcache.xml

字符串

camel.component.cache.configuration.cache-loader-registry

使用 CacheLoaderRegistry 配置缓存加载程序

 

CacheLoaderRegistry

camel.component.cache.configuration.cache-name

缓存的名称

 

字符串

camel.component.cache.configuration.disk-expiry-thread-interval-seconds

运行磁盘到期线程之间的秒数。

 

Long

camel.component.cache.configuration.disk-persistent

磁盘存储是否会在应用程序重启之间保留。

false

布尔值

camel.component.cache.configuration.eternal

设定元素是否声音。如果发往,则忽略超时,且元素永远不会过期。

false

布尔值

camel.component.cache.configuration.event-listener-registry

使用 CacheEventListenerRegistry 配置事件监听程序

 

CacheEventListener Registry

camel.component.cache.configuration.max-elements-in-memory

在内存中保存的元素数量。

1000

整数

camel.component.cache.configuration.memory-store-eviction-policy

达到内存中最多元素数时要使用的驱除策略。策略会定义要删除的元素。LRU - Lest Recently Used LFU - Lest Frently Used FIFO - First In First Out

 

MemoryStoreEviction Policy

camel.component.cache.configuration.object-cache

是否打开允许将非序列化对象存储在缓存中。如果这个选项被启用,则无法对磁盘启用溢出。

false

布尔值

camel.component.cache.configuration.overflow-to-disk

指定缓存是否为磁盘溢出

true

布尔值

camel.component.cache.configuration.time-to-idle-seconds

元素到期前访问之间的最大时间

300

Long

camel.component.cache.configuration.time-to-live-seconds

创建时间和何时元素之间的最长时间。仅当元素不是框架时,才会使用

300

Long

camel.component.cache.enabled

启用缓存组件

true

布尔值

camel.component.cache.resolve-property-placeholders

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

camel.component.cache.configuration.disk-store-path

此参数将被忽略。CacheManager 使用 setter 注入来设置它。

 

字符串

55.4. 从缓存发送/查看消息

55.4.1. Message Headers 最多为 Camel 2.7

Expand
标头描述

CACHE_OPERATION

要在缓存上执行的操作。有效选项包括

* GET * CHECK * ADD * UPDATE * DELETE * DELETEALL
GETCHECK 需要 Camel 2.3 开始。

CACHE_KEY

用于将消息存储在缓存中的缓存密钥。如果 CACHE_OPERATION 是 DELETEALL,则缓存键是可选的

55.4.2. 消息标头 Camel 2.8+

Camel 2.8 中的标头更改

标头名称和支持的值已更改为带有 'CamelCache' 的前缀,并使用混合的大小写。这样可以更轻松地识别和保持与其他标头分开。CacheConstants 变量名称保持不变,只有它们的值已更改。另外,这些标头现在在执行缓存操作后从交换中删除。

Expand
标头描述

CamelCacheOperation

要在缓存上执行的操作。有效选项有

* CamelCacheGet * CamelCacheCheck * CamelCacheAdd * CamelCacheUpdate * CamelCacheDelete * CamelCacheDeleteAll

CamelCacheKey

用于将消息存储在缓存中的缓存密钥。如果 CamelCacheOperation 为 CamelCacheDeleteAll,则缓存键是可选的

CamelCacheAddCamelCacheUpdate 操作支持额外的标头:

Expand
标头类型描述

CamelCacheTimeToLive

整数

Camel 2.11: 生存时间(以秒为单位)。

CamelCacheTimeToIdle

整数

Camel 2.11: 空闲时间(以秒为单位)。

CamelCacheEternal

布尔值

Camel 2.11: 内容是否合理。

55.4.3. cache Producer

将数据发送到缓存时,需要能够直接将交换的有效负载存储在预先存在的或创建on-按需缓存中。这样做的好处包括

  • 设置上述显示的消息交换标头。
  • 确保 Message Exchange Body 包含定向到缓存的消息

55.4.4. 缓存消费者

从缓存接收数据涉及使用事件 Listener 侦听预先存在的或创建按需缓存的功能,并在任何缓存活动发生时接收自动通知(例如 CamelCacheGet/CamelCacheUpdate/CamelCacheDelete/CamelCacheDelete/CamelCacheDelete/CamelCacheDelete/CamelCacheDeleteAll)。在这样的活动中

  • 包含消息交换标头和消息交换正文(包含刚刚添加/更新有效负载)的交换会被放入并发送。
  • 如果是 CamelCacheDeleteAll 操作,则不会填充消息交换标头 CamelCacheKey 和 Message Exchange Body。

55.4.5. 缓存处理器

有一组 nice 处理器,能够执行缓存查找并有选择地替换有效负载内容。

  • 正文(body)
  • token
  • XPath 级别

55.5. 缓存使用示例

55.5.1. 示例 1:配置缓存

from("cache://MyApplicationCache" +
          "?maxElementsInMemory=1000" +
          "&memoryStoreEvictionPolicy=" +
              "MemoryStoreEvictionPolicy.LFU" +
          "&overflowToDisk=true" +
          "&eternal=true" +
          "&timeToLiveSeconds=300" +
          "&timeToIdleSeconds=true" +
          "&diskPersistent=true" +
          "&diskExpiryThreadIntervalSeconds=300")
Copy to Clipboard Toggle word wrap

55.5.2. 示例 2:向缓存添加密钥

RouteBuilder builder = new RouteBuilder() {
    public void configure() {
     from("direct:start")
     .setHeader(CacheConstants.CACHE_OPERATION, constant(CacheConstants.CACHE_OPERATION_ADD))
     .setHeader(CacheConstants.CACHE_KEY, constant("Ralph_Waldo_Emerson"))
     .to("cache://TestCache1")
   }
};
Copy to Clipboard Toggle word wrap

55.5.3. 示例 2:更新缓存中的现有密钥

RouteBuilder builder = new RouteBuilder() {
    public void configure() {
     from("direct:start")
     .setHeader(CacheConstants.CACHE_OPERATION, constant(CacheConstants.CACHE_OPERATION_UPDATE))
     .setHeader(CacheConstants.CACHE_KEY, constant("Ralph_Waldo_Emerson"))
     .to("cache://TestCache1")
   }
};
Copy to Clipboard Toggle word wrap

55.5.4. 示例 3:删除缓存中的现有密钥

RouteBuilder builder = new RouteBuilder() {
    public void configure() {
     from("direct:start")
     .setHeader(CacheConstants.CACHE_OPERATION, constant(CacheConstants.CACHE_DELETE))
     .setHeader(CacheConstants.CACHE_KEY", constant("Ralph_Waldo_Emerson"))
     .to("cache://TestCache1")
   }
};
Copy to Clipboard Toggle word wrap

55.5.5. 示例 4:删除缓存中的所有现有密钥

RouteBuilder builder = new RouteBuilder() {
    public void configure() {
     from("direct:start")
     .setHeader(CacheConstants.CACHE_OPERATION, constant(CacheConstants.CACHE_DELETEALL))
     .to("cache://TestCache1");
    }
};
Copy to Clipboard Toggle word wrap
RouteBuilder builder = new RouteBuilder() {
    public void configure() {
     from("cache://TestCache1")
     .process(new Processor() {
        public void process(Exchange exchange)
               throws Exception {
           String operation = (String) exchange.getIn().getHeader(CacheConstants.CACHE_OPERATION);
           String key = (String) exchange.getIn().getHeader(CacheConstants.CACHE_KEY);
           Object body = exchange.getIn().getBody();
           // Do something
        }
     })
   }
};
Copy to Clipboard Toggle word wrap
RouteBuilder builder = new RouteBuilder() {
   public void configure() {
     //Message Body Replacer
     from("cache://TestCache1")
     .filter(header(CacheConstants.CACHE_KEY).isEqualTo("greeting"))
     .process(new CacheBasedMessageBodyReplacer("cache://TestCache1","farewell"))
     .to("direct:next");

    //Message Token replacer
    from("cache://TestCache1")
    .filter(header(CacheConstants.CACHE_KEY).isEqualTo("quote"))
    .process(new CacheBasedTokenReplacer("cache://TestCache1","novel","#novel#"))
    .process(new CacheBasedTokenReplacer("cache://TestCache1","author","#author#"))
    .process(new CacheBasedTokenReplacer("cache://TestCache1","number","#number#"))
    .to("direct:next");

    //Message XPath replacer
    from("cache://TestCache1").
    .filter(header(CacheConstants.CACHE_KEY).isEqualTo("XML_FRAGMENT"))
    .process(new CacheBasedXPathReplacer("cache://TestCache1","book1","/books/book1"))
    .process (new CacheBasedXPathReplacer("cache://TestCache1","book2","/books/book2"))
    .to("direct:next");
   }
};
Copy to Clipboard Toggle word wrap

55.5.8. 示例 7:从缓存中获取条目

from("direct:start")
    // Prepare headers
    .setHeader(CacheConstants.CACHE_OPERATION, constant(CacheConstants.CACHE_OPERATION_GET))
    .setHeader(CacheConstants.CACHE_KEY, constant("Ralph_Waldo_Emerson")).
    .to("cache://TestCache1").
    // Check if entry was not found
    .choice().when(header(CacheConstants.CACHE_ELEMENT_WAS_FOUND).isNull()).
        // If not found, get the payload and put it to cache
        .to("cxf:bean:someHeavyweightOperation").
        .setHeader(CacheConstants.CACHE_OPERATION, constant(CacheConstants.CACHE_OPERATION_ADD))
        .setHeader(CacheConstants.CACHE_KEY, constant("Ralph_Waldo_Emerson"))
        .to("cache://TestCache1")
    .end()
    .to("direct:nextPhase");
Copy to Clipboard Toggle word wrap

55.5.9. 示例 8:检查缓存中的条目

注意:CHECK 命令会测试缓存中存在条目,但不会在正文中放置消息。

from("direct:start")
    // Prepare headers
    .setHeader(CacheConstants.CACHE_OPERATION, constant(CacheConstants.CACHE_OPERATION_CHECK))
    .setHeader(CacheConstants.CACHE_KEY, constant("Ralph_Waldo_Emerson")).
    .to("cache://TestCache1").
    // Check if entry was not found
    .choice().when(header(CacheConstants.CACHE_ELEMENT_WAS_FOUND).isNull()).
        // If not found, get the payload and put it to cache
        .to("cxf:bean:someHeavyweightOperation").
        .setHeader(CacheConstants.CACHE_OPERATION, constant(CacheConstants.CACHE_OPERATION_ADD))
        .setHeader(CacheConstants.CACHE_KEY, constant("Ralph_Waldo_Emerson"))
        .to("cache://TestCache1")
    .end();
Copy to Clipboard Toggle word wrap

55.6. 管理 EHCache

EHCache 拥有自己的来自 JMX 的统计数据和管理。

以下是如何在 Spring 应用程序上下文中通过 JMX 来公开它们的片段:

<bean id="ehCacheManagementService" class="net.sf.ehcache.management.ManagementService" init-method="init" lazy-init="false">
  <constructor-arg>
    <bean class="net.sf.ehcache.CacheManager" factory-method="getInstance"/>
  </constructor-arg>
  <constructor-arg>
    <bean class="org.springframework.jmx.support.JmxUtils" factory-method="locateMBeanServer"/>
  </constructor-arg>
  <constructor-arg value="true"/>
  <constructor-arg value="true"/>
  <constructor-arg value="true"/>
  <constructor-arg value="true"/>
</bean>
Copy to Clipboard Toggle word wrap

当然,您可以在直接 Java 中进行相同的操作:

ManagementService.registerMBeans(CacheManager.getInstance(), mbeanServer, true, true, true, true);
Copy to Clipboard Toggle word wrap

您可以通过这种方式获得缓存命中、未命中的缓存命中率、磁盘点击、磁盘点数、大小统计。您还可以实时更改 CacheConfiguration 参数。

55.7. 缓存复制 Camel 2.8

Camel 缓存组件可以使用多种不同的复制机制在服务器节点之间分发缓存,包括:RMI、JGroups、JMS 和缓存服务器。

使其工作有两种不同的方法:

1.您可以手动配置 ehcache.xml

或者

2.您可以配置以下三个选项:

  • cacheManagerFactory
  • eventListenerRegistry
  • cacheLoaderRegistry

使用第一个选项配置 Camel 缓存复制是一些硬工作,因为您必须单独配置所有缓存。因此,当所有缓存名称未知时,使用 ehcache.xml 不是一个好主意。

当希望使用多个不同的缓存时,第二个选项会更好,因为您不需要为每个缓存定义选项。这是因为,每个 CacheManager 和每个 CacheEndpoint 设置复制选项。另外,这也是在开发阶段不能知道缓存名称的唯一方法。

注意 :阅读 EHCache 手动 以更好地了解 Camel 缓存复制机制可能会很有用。

55.7.1. 示例: JMS 缓存复制

JMS 复制是最强大且安全的复制方法。与 Camel 缓存复制一同使用使得它变得更加简单。一个示例 位于单独的页面 中。

第 56 章 Caffeine Cache 组件

可作为 Camel 版本 2.20 可用

caffeine-cache 组件可让您使用 Caffeine 的简单缓存来执行缓存操作。

Maven 用户需要将以下依赖项添加到其 pom.xml 中:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-caffeine</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

56.1. URI 格式

caffeine-cache://cacheName[?options]
Copy to Clipboard Toggle word wrap

您可以以以下格式在 URI 中附加查询选项 ?option  =value&option=#beanRef&…​

56.2. 选项

Caffeine Cache 组件支持 2 选项,它们如下所列。

Expand
名称描述默认类型

配置 (高级)

设置全局组件配置

 

CaffeineConfiguration

resolveProperty Placeholders (advanced)

启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。

true

布尔值

Caffeine Cache 端点使用 URI 语法配置:

caffeine-cache:cacheName
Copy to Clipboard Toggle word wrap

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

56.2.1. 路径名(1 参数):

Expand
名称描述默认类型

cacheName

所需的 缓存名称

 

字符串

56.2.2. 查询参数(19 参数):

Expand
名称描述默认类型

createCacheIfNotExist (common)

配置如果缓存存在或者未预先配置,则需要创建缓存。

true

布尔值

bridgeErrorHandler (consumer)

允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。

false

布尔值

exceptionHandler (consumer)

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

 

ExceptionHandler

exchangePattern (consumer)

在使用者创建交换时设置交换模式。

 

ExchangePattern

action (producer)

配置默认缓存操作。如果在消息标头中设置了操作,则来自标头的操作将优先使用。

 

字符串

cache (producer)

配置一个已经使用实例化的缓存

 

Cache

cacheLoader (producer)

在 LoadCache 使用时配置 CacheLoader

 

CacheLoader

evictionType (producer)

为此缓存设置驱除类型

SIZE_BASED

EvictionType

expireAfterAccessTime (producer)

在基于时间的驱除(以秒为单位)时,设置访问时间过期(以秒为单位)

300

int

expireAfterWriteTime (producer)

在基于时间的驱除(以秒为单位)设置访问后写入过期(以秒为单位)

300

int

initialCapacity (producer)

为缓存设置初始容量

10000

int

key (producer)

配置默认操作密钥。如果在消息标头中设置了密钥,则标头中的密钥优先使用。

 

对象

maximumSize (producer)

为缓存设置最大大小

10000

int

removalListener (producer)

为缓存设置特定的删除 Listener

 

RemovalListener

statsCounter (producer)

为缓存统计设置特定的 Stats Counter

 

StatsCounter

statsEnabled (producer)

在缓存中启用 stats

false

布尔值

keyType (advanced)

缓存密钥类型,默认为 java.lang.Object

java.lang.Object

字符串

同步 (高级)

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

false

布尔值

valueType (advanced)

缓存值类型,默认为 java.lang.Object

java.lang.Object

字符串

56.3. Spring Boot Auto-Configuration

组件支持 17 个选项,如下所示。

Expand
名称描述默认类型