我想将类似 PDX 的数据放入带有 GFSH 的区域

I want to put PDX like data into a region with GFSH

在 GFSH 中,我想 运行 一个 put 命令来创建一个键和值,其中包含一组类似于 PDX 的值...例如:

put --key=('test1') --value=('Client':'XYZ', 'MsgType':'R', 'OrdType':'C', 'SecurityType':'FOR', 'Symbol':'EUR/USD', 'QuoteReqId':'test1', 'OrderQty':'100000', 'OrderQty2':'0', 'Reference1':'GFSH Test', 'StreamingQuoteDuration':'30', 'FutSettDate':'20200102', 'Currency':'EUR') --region=/myRegion

这是返回错误

您不能指定':'R', 'OrdType':'C', 'SecurityType':'FOR', 'Symbol':'EUR/USD', 'QuoteReqId':'test1', 'OrderQty':'100000', 'OrderQty2':'0', 'Reference1':'GFSH Test', 'StreamingQuoteDuration' :'30', 'FutSettDate':'20200102', 'Currency':'EUR')' 作为单个命令中默认 ('') 选项的另一个值。 您之前已经提供了 'MsgType'。 您是否忘记在另一个选项的值周围添加引号?

您基本上需要从 value 选项中删除所有空格,一旦您这样做就一切正常:

gfsh>put --key=('test1') --value=('Client':'XYZ','MsgType':'R','OrdType':'C','SecurityType':'FOR','Symbol':'EUR/USD','QuoteReqId':'test1','OrderQty':'100000','OrderQty2':'0','Reference1':'GFSHTest','StreamingQuoteDuration':'30','FutSettDate':'20200102','Currency':'EUR') --region=/myRegion
Result      : true
Key Class   : java.lang.String
Key         : {'test1'}
Value Class : java.lang.String
Old Value   : null


gfsh>query --query="SELECT * FROM /myRegion"
Result : true
Limit  : 100
Rows   : 1




Result
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{'Client':'XYZ','MsgType':'R','OrdType':'C','SecurityType':'FOR','Symbol':'EUR/USD','QuoteReqId':'test1','OrderQty':'100000','OrderQty2':'0','Reference1':'GFSHTest','StreamingQuoteDuration':'30','FutSettDate':'20200102','Currency':'EUR'}

干杯。

我试过上面@Juan Ramos 的回答,但效果不佳。空格不是问题 - 使初始 put 工作的原因是在括号中的值字符串周围添加双引号:

put --key=('test1') --value="('Client':'XYZ', 'MsgType':'R', 'OrdType':'C', 'SecurityType':'FOR', 'Symbol':'EUR/USD', 'QuoteReqId':'test1', 'OrderQty':'100000', 'OrderQty2':'0', 'Reference1':'GFSH Test', 'StreamingQuoteDuration':'30', 'FutSettDate':'20200102', 'Currency':'EUR')" --region=/myRegion

这仍然会在区域中放置一个字符串,但不会对数据进行 PDX 表示。