我们希望能在数据出错时,将错误的数据放到队列的末尾,这样能保证数据能一直处理下去,而不会发生堵塞?
以CRM inbound processing为例,数据从ERP到了CRM后,
Middleware framework会call application 自己的逻辑,如果application inbound里发生了异常,而没有在application里处理,则该异常就抛到了framework layer,导致队列里剩下的item没机会得到处理,BDOC亮红灯。
我当时的思路就是,把standard 不支持,但是客户又确实用到的scenario抽象成一个exception,当application检测到这种情况后,application 抛exception,然后在最外面,就是application的入口处catch住该exception,输入error message,然后继续队列里下一个item的处理。
但是这个思路是将这个issue当做标准产品的一个bug处理的,即需要修改application的代码。如果partner consultant想通过不改标准代码,仅仅写一些BAdI是没法完成的。
另外如果把adapter对应的block size改成1的话,即每个队列的size就为1,这样比如有N个material从ERP到CRM,则会在CRM生成N个队列,每个队列size为1,这样就使得每个队列里唯一的material的inbound处理独立开来,但是inbound 处理不再是mass handling的,我们没有测试过block size =1 对性能影响究竟有多大。