第 12 章 一个tmosphere Websocket 组件
从 Camel 版本 2.14 开始提供
atmo consist-websocket: 组件为通过 Websocket 的外部客户端通信提供基于 Websocket 的端点(作为接受外部客户端的 websocket 连接的 servlet)。
组件使用 SERVLET 组件,并使用 Atmosphere 库来支持各种 Servlet 容器中的 Websocket 传输(如 Jetty、Tomcat、…)。
与启动嵌入式 Jetty 服务器的 Websocket 组件不同,此组件使用容器的 servlet 提供程序。
Maven 用户需要将以下依赖项添加到这个组件的 pom.xml
中:
12.1. 一个tmosphere-Websocket 选项 复制链接链接已复制到粘贴板!
Atmosphere Websocket 组件支持 9 个选项,如下所列。
Name | 描述 | 默认值 | 类型 |
---|---|---|---|
servletName (consumer) | 要使用的默认 servlet 名称。默认名称为 CamelServlet。 | CamelServlet | 字符串 |
httpRegistry (consumer) | 使用自定义 org.apache.camel.component.servlet.HttpRegistry。 | HttpRegistry | |
attachmentMultipart Binding (consumer) | 是否自动将 multipart/form-data 作为 Camel Exchange 上的附件进行自动绑定。选项 attachmentMultipartBinding=true 和 disableStreamCache=false 无法一起工作。删除 disableStreamCache 以使用 AttachmentMultipartBinding。默认情况下关闭此设置,因为这可能需要 servlet 特定的配置,以便在使用 Servlet 时启用此功能。 | false | 布尔值 |
fileNameExtWhitelist (consumer) | 接受上传的文件的已接受文件扩展名白名单。可以使用逗号分隔多个扩展,如 txt、xml。 | 字符串 | |
httpBinding (advanced) | 使用自定义 HttpBinding 来控制 Camel 消息和 HttpClient 之间的映射。 | HttpBinding | |
httpConfiguration (advanced) | 将共享 HttpConfiguration 用作基础配置。 | HttpConfiguration | |
允许JavaSerialized 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
atmosphere-websocket:servicePath
使用以下路径和查询参数:
12.1.1. 路径参数(1 参数): 复制链接链接已复制到粘贴板!
Name | 描述 | 默认值 | 类型 |
---|---|---|---|
servicePath | websocket 端点的名称 | 字符串 |
12.1.2. 查询参数(38 参数): 复制链接链接已复制到粘贴板!
Name | 描述 | 默认值 | 类型 |
---|---|---|---|
chunked (common) | 如果此选项为 false,则 Servlet 将禁用 HTTP 流,并在响应上设置 content-length 标头 | true | 布尔值 |
disableStreamCache (common) | 确定 Servlet 中的原始输入流是否被缓存(Camel 将会在 memory/overflow 中读取流到文件,流缓存)缓存。默认情况下,Camel 将缓存 Servlet 输入流,以支持多次读取,以确保其 Camel 可以从流检索所有数据。但是,当您需要访问原始流时,您可以将此选项设置为 true,例如将其直接流传输到文件或其他持久性存储。DefaultHttpBinding 将请求输入流复制到流缓存中,如果此选项为 false,则将它放入消息正文,以支持多次读取流。如果您使用 Servlet 到 bridge/proxy 端点,则请考虑启用此选项来提高性能,如果您不需要多次读取消息有效负载。http/http4 producer 默认缓存响应正文流。如果将此选项设置为 true,则生成者不会缓存响应正文流,而是使用响应流作为消息正文。 | false | 布尔值 |
headerFilterStrategy (common) | 使用自定义 HeaderFilterStrategy 过滤到 Camel 消息的标头。 | HeaderFilterStrategy | |
sendToAll (common) | 是否发送到所有(广播)或发送到单个接收器。 | false | 布尔值 |
transferException (common) | 如果在消费者端启用并交换失败处理,如果原因 Exception 在响应中作为 application/x-java-serialized-object 内容类型发送序列化,则结果为 application/x-java-serialized-object 内容类型。在生产者侧,异常将反序列化并丢弃为原样,而不是 HttpOperationFailedException。原因异常需要按顺序处理。默认为关闭。如果您启用它,则 Java 会将传入的数据反序列化 Java 请求,这可能会成为潜在的安全风险。 | false | 布尔值 |
useStreaming (common) | 启用流,以作为多个文本片段发送数据。 | false | 布尔值 |
httpBinding (common) | 使用自定义 HttpBinding 来控制 Camel 消息和 HttpClient 之间的映射。 | HttpBinding | |
async (consumer) | 将消费者配置为在 async 模式下工作 | false | 布尔值 |
bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由错误处理程序,这意味着当消费者试图选择传入消息或类似信息时发生异常,现在将作为消息处理并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.ExceptionHandler 来处理例外情况,该处理程序将被记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
httpMethodRestrict (consumer) | 仅在 HttpMethod 匹配时才允许使用,如 GET/POST/PUT 等。可以使用逗号分隔多个方法。 | 字符串 | |
matchOnUriPrefix (consumer) | 如果找不到完全匹配,消费者是否应该尝试通过匹配 URI 前缀来查找目标消费者。 | false | 布尔值 |
responseBufferSize (consumer) | 在 javax.servlet.ServletResponse 上使用自定义缓冲区大小。 | 整数 | |
servletName (consumer) | 要使用的 servlet 的名称 | CamelServlet | 字符串 |
attachmentMultipartBinding (consumer) | 是否自动将 multipart/form-data 作为 Camel Exchange 上的附件进行自动绑定。选项 attachmentMultipartBinding=true 和 disableStreamCache=false 无法一起工作。删除 disableStreamCache 以使用 AttachmentMultipartBinding。默认情况下关闭此设置,因为这可能需要 servlet 特定的配置,以便在使用 Servlet 时启用此功能。 | false | 布尔值 |
eagerCheckContentAvailable (consumer) | 如果 content-length 标头为 0,还是 eager 检查 HTTP 请求是否有内容。如果 HTTP 客户端没有发送流数据,则可以打开此项。 | false | 布尔值 |
ExceptionHandler ( consumer) | 要让使用者使用自定义例外处理程序:请注意,如果启用了 bridgeErrorHandler 选项,则此选项不使用。默认情况下,消费者将处理异常,其记录在 WARN 或 ERROR 级别中,并忽略。 | ExceptionHandler | |
exchangePattern (consumer) | 在消费者创建交换时设置交换模式。 | ExchangePattern | |
fileNameExtWhitelist (consumer) | 接受上传的文件的已接受文件扩展名白名单。可以使用逗号分隔多个扩展,如 txt、xml。 | 字符串 | |
optionsEnabled (consumer) | 指定是否为这个 Servlet 消费者启用 HTTP OPTIONS。默认情况下关闭 OPTIONS。 | false | 布尔值 |
traceEnabled (consumer) | 指定是否为这个 Servlet 使用者启用 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 交换标头。把它设置为 false,仅允许包含来自 HTTP 响应的标头(而不是传播 IN 标头)。 | true | 布尔值 |
httpMethod (producer) | 配置要使用的 HTTP 方法。如果设置,HttpMethod 标头无法覆盖此选项。 | HttpMethods | |
ignoreResponseBody (producer) | 如果此选项为 true,http producer 不会读取响应正文,并缓存输入流 | false | 布尔值 |
preserveHostHeader (producer) | 如果选项为 true,HttpProducer 会将 Host 标头设置为当前交换主机标头中包含的值,这适用于您希望下游服务器收到的 Host 标头来反映上游客户端调用的 URL 的 URL,这将允许使用 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,它允许您在 bridge/proxy 端点时重写 url。更多信息,请访问 http://camel.apache.org/urlrewrite.html | UrlRewrite | |
mapHttpMessageBody (advanced) | 如果此选项为 true,则交换的 IN Exchange Body 将映射到 HTTP 正文。把它设置为 false 可以避免 HTTP 映射。 | true | 布尔值 |
mapHttpMessageFormUrl EncodedBody (advanced) | 如果此选项为 true,则交换的 IN Exchange Form Encoded body 将映射到 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 搭配使用的身份验证主机 | 字符串 |