a. 增加依赖的Jar
<dependency> <groupId>org.xson</groupId> <artifactId>tangyuan-mongo</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.3.0</version> </dependency>
b. 添加服务组件
在tangyuan总配置文件(tangyuan.xml)中添加mongo组件:
<?xml version="1.0" encoding="UTF-8"?> <tangyuan-component xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xson.org/schema/tangyuan/component.xsd"> <!--添加Mongo服务组件 --> <component resource="component-mongo.xml" type="mongo" /> </tangyuan-component>
c. 配置组件
tangyuan-mongo组件本身的配置(component-mongo.xml):
<?xml version="1.0" encoding="UTF-8"?> <mongo-component xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xson.org/schema/tangyuan/mongo/component.xsd"> <!-- Mongo数据源 --> <dataSource id="mongods"> <property name="url" value="mongodb://127.0.0.1:27017/mdb" /> </dataSource> <!-- Mongo服务插件 --> <plugin resource="test-mongo.xml"/> </mongo-component>
d. 编写Mongo服务
在服务插件test-mongo.xml文件中:
<?xml version="1.0" encoding="UTF-8"?> <mongoservices xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xson.org/schema/tangyuan/mongo/service.xsd" ns="mdemo"> <selectSet id="getUser" dsKey="mongods"><![CDATA[ select * from user where sex = '女' and age >= 18 and age <= 28 ]]></selectSet> </mongoservices>
e. 单元测试
@Test public void testSMS() { XCO request = new XCO(); // set Object obj = ServiceActuator.execute("mdemo/getUser", request); System.out.println(obj); }
tangyuan-mongo组件中数据源配置分为两种,一种是普通数据源,适用于普通的Mongo应用项目;另一种是数据源组,适用于数据量和数据并发访问量大的应用场景,同时需要配合分库分表模块共同使用。数据源的配置位于component-mongo.xml中。
配置示例
<dataSource id="mongods"> <property name="url" value="mongodb://127.0.0.1:27017/mdb" /> </dataSource>
dataSource节点属性说明
属性名 | 用途及说明 | 必填 | 取值 |
---|---|---|---|
id | 此数据源的唯一标识,不可重复 | Y | 用户定义,但是不能出现”.” |
isDefault | 是否是默认数据源,如果系统中配置多个数据源,则只能有一个为默认的 | N | true/false |
property节点属性说明
属性名 | 用途及说明 | 必填 | 取值 |
---|---|---|---|
name | 属性名称 | Y | 用户定义 |
value | 属性值 | Y | 用户定义 |
property节点属性名称和属性值说明
属性名 | 用途及说明 | 取值 | 默认值 |
---|---|---|---|
url | mongo连接协议 | String | |
username | 用户名 | String | |
password | 密码 | String | |
socketKeepAlive | 是否保持长链接 | boolean | true |
maxWaitTime | 长链接的最大等待时间 | int | 10 * 60 * 1000 |
connectTimeout | 链接超时时间 | int | 60 * 1000 |
socketTimeout | the socket timeout, in milliseconds | int | 60 * 1000 |
connectionsPerHost | maximum number of connections | int | 30 |
minConnectionsPerHost | minimum number of connections | int | |
maxConnectionIdleTime | the maximum idle time, in milliseconds, which must be > 0 | int | |
maxConnectionLifeTime | the maximum life time, in milliseconds, which must be > 0 | int | |
minHeartbeatFrequency | the minimum heartbeat frequency, in milliseconds, which must be > 0 | int | |
serverSelectionTimeout | the server selection timeout, in milliseconds | int | |
sslInvalidHostNameAllowed | whether invalid host names are allowed in SSL certificates. | boolean | |
sslEnabled | set to true if using SSL | boolean | |
requiredReplicaSetName | Sets the required replica set name for the cluster. | String | |
writeConcern | 保障write operation的可靠性 | String | |
readConcern | 保障read operation的可靠性 | String |
配置示例
<dataSourceGroup groupId="dsGourp" start="0" end="9"> <property name="url" value="mongodb://127.0.0.1:27017/mdb{}" /> </dataSourceGroup>
说明
数据源的本质是基于用户设置的开始和结束索引,创建多个数据源,上面代码代表创建了100个数据源
mongodb://127.0.0.1:27017/mdb0 mongodb://127.0.0.1:27017/mdb1 ... mongodb://127.0.0.1:27017/mdb9
dataSourceGroup节点属性说明
属性名 | 用途及说明 | 必填 | 取值 |
---|---|---|---|
id | 此数据源的唯一标识,不可重复 | Y | 用户定义,但是不能出现”.” |
isDefault | 是否是默认数据源,如果系统中配置多个数据源,则只能有一个为默认的 | N | true/false |
start | 开始索引,默认为0 | N | 整数类型,用户定义 |
end | 结束索引 | Y | 整数类型,用户定义 |
property节点
除了url属性可以使用占位符,其他同dataSource中的property节点。
tangyuan-mongo组件中可以通过插件进行服务的定义、管理和功能的扩展;按用途可分为三种:
结果映射插件主要负责返回结果映射的配置,分库分表插件,顾名思义就是对分库分表功能的配置;而服务插件,则是定义具体的MONGO服务的。结果映射插件和分库分表插件都是最多只能有一个,服务插件则可由多个;配置位于组件配置文件component-mongo.xml中。
配置示例
<!-- Mongo结果映射插件 --> <mapper resource="mapper-mongo.xml" /> <!-- Mongo分库分表插件 --> <sharding resource="sharding-mongo.xml" /> <!-- Mongo服务插件 --> <plugin resource="test-mongo.xml"/>
mapper、sharding、plugin节点属性说明
属性名 | 用途及说明 | 必填 | 取值 |
---|---|---|---|
resource | 插件的资源文件路径 | Y | 用户定义 |