2015-04-29 16 views
0

有没有办法在春XD使用,关键一流值一流参数为的GemFire沉 ? 关于文档,我只能使用keyExpression但没有关于它的类类型。同样的关键类。春XD的GemFire下沉,关键一流,价值类参数

我有这样的命令,以使的GemFire,

put --key-class = java.lang.String --value-class = Employee --key = ('id': '998') --value = ('id': 186, 'firstName': 'James', 'lastName': 'Goslinga') --region = replicated2

所以我的GemFire使用--key级--value级参数。 但我不能从春天XD因为只有keyExpression的GemFire水槽参数使用它们。

任何想法解决?

回答

0

据我所知上面的语法不支持原生GemFire。所以你不能用Spring XD开箱即用。语法看起来有点像SQL一样。你在使用Gemfire XD吗?这是你自己写的东西吗?

宝石吸收器使用spring-integration-gemfire,允许您使用SpEL声明keyExpression。使用宝石水槽的价值始终是有效载荷。 SI gemfire出站适配器包装Region.put(键值)。 GemFire API支持通过泛型进行输入,即Region <K,V>,但在这种情况下不会执行此操作。 GemFire RegionFactory允许keyConstraint和valueConstraint属性约束类型,但这是Spring XD外部的Region配置的一部分。此外,在您的示例中没有任何地址与数据绑定,例如,

Person p = ('id': 186, 'firstName': 'James', 'lastName': 'Goslinga') 

此功能需要自定义接收器模块。如果您的命令可以作为shell脚本执行,您可以使用shell接收器调用它。

0

谢谢你的回答,

也许基本上我可以用这种方式解释我的问题。

如果我写下面的命令gemfire控制台我可以在包含Employee类的对象的区域中创建新条目。

put --key-class=java.lang.String --value-class=Employee --key=('id':'998') --value=('id':186,'firstName':'James','lastName':'Goslinga') --region=replicated2

的认为,我想要做的就是我会从春天-XD发送数据。我将在Gemfire中拥有一个Employee类的新对象。

如果我创建了这样的流,它将从兔子MQ获取数据并将它发送到gemfire。

stream create --name reference-data-import --definition "rabbit --outputType=text/plain | gemfire-json-server --host=MC0WJ1BC --regionName=region10 --keyExpression=payload.getField('id')" --deploy

我可以看到这种类型的 “com.gemstone.gemfire.pdx.internal.PdxInstanceImpl” 的数据。

关于spring-xd文档,我可以使用这样的参数outputType = application/x-java-object; type = com.bar.Foo,但我从来没有设法解决,即使我部署我的类。 如果我可以看到一个简单的工作示例,它将会对我很好。