如今,公司的现实要求不同技术之间更加集成、协同工作、更改和处理数据。在这个生态系统中,集成平台的使用至关重要。但是,使用内存中数据库对于显著提高信息处理性能是必要的。在本文中,我们将演示 JBoss Fuse 集成平台的使用,以及名为红帽数据网格的内存中数据库。

JBoss Fuse是基于框架阿帕奇骆驼的集成平台。它侧重于许多应用程序、服务和设备之间的中介、转换和数据路由。

红帽数据网格(Datagrid)是一个内存中数据管理系统,它使用基于开源产品Infinispan的关键价值概念。红帽数据网格可用作简单的缓存解决方案、NoSql 数据库,甚至事件代理。我们可以假设红帽数据网格是企业版本,英菲尼潘是产品的社区版本。本文介绍 JBoss Fuse 如何用作与红帽数据网格通信的中间件解决方案,即此服务器配置为远程缓存服务器。

在 JBoss Fuse 版本 6.3 和 7.1 的文档中,我们可以找到对称为骆驼-jbossdatagrid 的组件的引用,该组件不再受红帽支持,并且已在最新版本中被组件 Camel-finispan 替换。

Xml

 

xxxxxxx
1
 
1
[ <组 Id>org.apache.camel</组 Id>

3
<工件Id>骆驼-非菲尼潘<artifactId>
4
[lt;版本>$@camel.version]</版本>
5
</依赖项 >

为了演示 JBoss Fuse 和红帽数据网格之间的集成,我们创建了一个快速入门项目,在本文中,我们详细介绍了如何完成此集成。该项目的源代码可在https://git.io/Je1J2下载。

对于这个项目,我们使用JBoss Fuse独立版7.4,使用阿帕奇骆驼2.21和红帽数据网格7.4,相当于英尼尼潘版本9.4。

除独立模式外,JBoss 保险丝可以在 EAP、KARAF 和开档中执行。此处应用的所有概念都与任何使用模式兼容此对象负责存储用于访问远程服务器的配置并管理与其的通信。

在下面的示例中,我们可以可视化示例项目中配置的"RemoteCacheManager"的实现。基本上,它是一个 java 类,使用类"配置生成器"来存储我们的红帽数据网格的配置。

Java

 

xxxxxxx
1
22
1
公共远程缓存配置|

3
       
4
   私有字符串rhdgHosts="127.0.0.1:11222";  
5
   专用整数套接字超时=5000    
6
   私有整数时间超时=5000     
7
   私有整数最大值 Retries=10;
8
    @Bean

10
    公共远程缓存管理器缓存容器() |
11
         
12
        配置生成器生成器= 新的配置生成器();
13
建设者添加服务器(rhghosts);
14
建设者套接字超时套接字超时);
15
建设者连接超时连接超时);
16
最大重试最大重试);

17
建设者连接池()。薄荷10);
18
建设者连接池()。最大懒惰(50);
19
           
20
        返回新的远程缓存管理器生成器.生成
21
    }  
22
}

此连接的基本方法是:

使用此配置,组件 Camel-finispan 可以连接,并使用热棒协议在红帽数据网格中插入、读取和删除密钥等操作。

此协议用于比基于文本的其他协议更快地加快客户端访问和服务器交互,还允许客户端为负载平衡、故障转移和数据查询做出更明智的决策。

在继续之前,了解英尼尼潘终结点 (Datagrid) 的语法非常重要。 要创建生产者和使用者,组件使用以下语法:

Java

 

xxxxxxx
1

例如:192.168.0.4:11222;192.168.0.5:11222。

套接字超时

此属性定义最大套接字读取超时(以毫秒为单位),然后放弃等待服务器的字节。默认值为 60000(1 分钟)

连接超时

此属性定义在放弃连接到服务器之前的最大套接字连接超时。

最大重试 设置每个请求的最大重试次数。有效值应大于或等于 0(零)。零表示在网络故障时不会重试。它默认为 10。

骆驼菲尼潘行动

要执行的操作。在这种情况下,PUT。

骆驼英菲尼潘基

键的名称

骆驼菲尼潘值

关键内容

下面是直接实现:保存关键路由。

Java

 

 
1
获取密钥
2
"直接:获取键"
3
  .路由Id"获取键路由"
4
  .设置标题非非定人常量)。操作
5
获取)))

6

7
  .设置标题非非定人常量)。钥匙
8
简单("in.header.id}"))。  ("内菲斯潘:[custom.rhdg.cache.name][缓存容器]#remoteCacheManagerExample");

键值可以通过消息正文进行恢复,以换取.getIn(getBody)。如果查询中找不到密钥,则不会返回任何错误消息。

删除密钥

密钥排除遵循查询的相同过程;我们只是改变操作的类型。在这种情况下,我们发送具有值 REMOVE 的标头和另一个具有键值的标头。

下面是删除红帽数据网格中密钥的路由。

Java

 

xxxxxxx
1
10
 
1
删除密钥
2
("直接:删除键")
3

4
  .道路Id("删除钥匙路")
5
设置标题非非定人常量)。操作

6
常数非菲尼潘操作)。删除))))
7

8
  .设置标题非非定人常量)。钥匙
9
简单"${in.header.id})
10
  .("内菲斯潘:[custom.rhdg.cache.name][缓存容器]#remoteCacheManagerExample");

密钥的生命周期

LifeSpan e MaxIdle 的属性控制密钥的生命周期。这些属性在红帽数据网格中的缓存创建期间配置;在红帽数据网格中创建这些属性时配置这些属性。但是,可以覆盖通过 JBoss Fuse 插入的每个密钥的配置如果此值为 -1,则密钥永远不会过期。MaxIdle 是密钥保留在缓存中而不被使用的时间。寿命应始终高于 MaxIdle。

要设置 LifeSpan 和 MaxIdle 值,我们使用 4 个标头。

骆驼在菲尼潘寿命时间

缓存内值的生命周期时间。负值被解释为无穷大。

我们可以通过 Infinispan Constants 类中定义的常量LIFESPAN_TIME来引用它。

骆驼菲尼潘时间单位

条目生命周期的时间单位。

我们可以通过 Infinispan Constants 类中定义的常量LIFESPAN_TIME_UNIT来引用它。

骆驼在菲尼潘麦克西德时间

在将条目视为过期之前,允许该条目空闲的最长时间。

我们可以通过 Infinispan Constants 类中定义的常量MAX_IDLE_TIME来引用它。

骆驼英菲尼潘麦克斯德尔时间单位

条目的最大空闲时间的时间单位。

我们可以通过 Infinispan Constants 类中定义的常量MAX_IDLE_TIME_UNIT来引用它。

在下面的示例中,插入的密钥的使用寿命为 10 秒。

Java