10.4. 声明检查 EIP
声明检查 EIP 复制链接链接已复制到粘贴板!
通过 声明检查 EIP 模式,如 图 10.4 “声明检查模式” 所示,您可以将消息内容替换为一个声明检查(唯一键)。使用 声明检查 EIP 模式来稍后检索消息内容。您可以将消息内容临时存储在像数据库或文件系统这样的持久性存储中。当消息内容非常大(且要发送时,不是所有组件都需要所有信息时,这个模式非常有用。
当您无法信任外部的信息时,它也很有用。在这种情况下,使用 Claim Check 隐藏数据的敏感部分。
EIP 模式的 Camel 实施将消息内容临时存储在内部内存存储中。
图 10.4. 声明检查模式
10.4.1. 声明检查 EIP 选项 复制链接链接已复制到粘贴板!
Claim Check EIP 支持下表中列出的选项:
|   名称  |   描述  |   默认  |   类型  | 
|   operation  |   需要使用声明检查操作。它支持以下操作: 
										* get -  
										*  
										* set - 使用给定键设置新的声明检查。 
										* push - 在堆栈上设置新的声明检查(不要使用密钥)。 
										* 弹出 - 从堆栈获取最新的声明检查(不要使用该密钥)。 
										使用   |   ClaimCheckOperation  | |
|   key  |   使用特定密钥进行声明检查。  |   字符串  | |
|   filter  |   指定过滤器来控制要从声明检查仓库中合并的数据。  |   字符串  | |
|   strategyRef  |   
										使用自定义   |   字符串  | 
过滤器选项 复制链接链接已复制到粘贴板!
					使用 Filter 选项定义在使用 Get 或 Pop 操作时重新合并的数据。使用 AggregationStrategy 来重新合并数据。默认策略使用过滤器选项轻松指定要合并的数据。
				
					过滤器选项 采用带有以下语法的 String 值:
				
- 
							
正文:聚合消息正文 - 
							
Attachments:聚合所有消息附件 - 
							
标头:聚合所有消息标头 - 
							
header:pattern: 聚合与模式匹配的所有消息标头 
模式规则支持通配符和正则表达式。
- 
							通配符匹配项(模式以 
*结尾,名称以模式开头) - 正则表达式匹配
 
					要指定多个规则,用 逗号 (、)分开它们。
				
以下是包含邮件正文和以 foo 开始的所有标头的基本过滤器示例:
body, header:foo*
body, header:foo*
- 
							只合并消息正文: 
正文 - 
							只合并消息附加: 
附加 - 
							只合并标头: 
标头 - 
							要合并标题名称 
fooonly:header:foo 
如果您将过滤器规则指定为空的或通配符,您可以合并所有内容。如需更多信息,请参阅 过滤要合并的数据。
当合并数据时,系统会覆盖任何现有的数据。它还会存储现有数据。
10.4.2. 使用 Include 和 Exclude Pattern 过滤选项 复制链接链接已复制到粘贴板!
以下是支持用来指定 include、exclude 或 remove 选项的语法。
- + : 以包含 (默认模式)
 - - : 要排除(排除的优先级高于 include)
 - -- : 删除(删除优先)
 
例如:
- 
								要跳过消息正文并合并所有内容,请使用 
-body - 
								要跳过消息标头 
foo并合并所有其他内容,使用--header:foo 
						您还可以指示系统在合并数据时删除标头。例如,要删除以条形开始的所有标题,使用- --headers:bar*。
					
							不要同时使用 include(+)和 exclude(-) header:pattern。
						
10.4.3. Java 示例 复制链接链接已复制到粘贴板!
						以下示例显示了操作中的 Push 和 Pop 操作:
					
						以下是使用 Get 和 Set 操作的示例:这个示例使用 foo 键。
					
							您可以使用 Get 操作获取相同的数据两次,因为它不会删除数据。但是,如果您只想获取一次数据,请使用 GetAndRemove 操作。
						
						以下示例演示了如何使用过滤器选项,其中您只想返回标题为 foo 或 bar。
					
10.4.4. XML 示例 复制链接链接已复制到粘贴板!
						以下示例显示了操作中的 Push 和 Pop 操作。
					
						以下是使用 Get 和 Set 操作的示例:这个示例使用 foo 键。
					
							您可以使用 Get 操作获取相同的数据两次,因为它不会删除数据。但是,如果您要获取一次数据,可以使用 GetAndRemove 操作。
						
						以下示例演示了如何使用过滤器选项将标头重新为 foo 或 bar。