webMethods Publishing delayed while outbound store is draining

问题描述:

在webMethods中遇到了Broker无法publish报文的异常,IntegrationServer Log 中出现的错如下:

[ISS.0098.0064I]Publishing delayed while outbound store is draining.  Service: wm.server.publish:publish
[ISS.0098.0064I]Publishing delayed while outbound store is draining.  Service: {0}

异常分析:

同事发现IS log中报错: outof Memory error,GC overhead limit exceed,看到broker的queue满了,先重启IS了(补充:后来同事回忆重启IS的时候,Broker一直都没关),再清除queue了,就出现现在的问题了。

处理步骤:

处理方法1:

Clearinga Client Queue 

1In My webMethods: Messaging > Broker Servers > Clients. 

2In the Client List, click the client ID of the client for which you want toclear the queue. 

3On the Client Details page, click the Statistics tab. 

4Under Client Queue, next to the Length field, click Clear Queue. 

结果失败

处理方法2:

Wheneverthere wont be any trigger/subscriber if we do the publish document will bethere in outbound store(it happened when doing the POC). Once we created thesubscriber/trigger to subscribe the same we couldn't subscribe, since somedoc's are in Outbound store. We get any error in Server log saying, "delayin subscribing.... since slow in draining data from outbound store....".Sowe shutdown the IS and delete the documentStore folder data, then up the ISwhich will solve the issue.

结果失败

处理方法3:

Since1 or some doc placed in outbound doc store for some reason & it's notcoming out of doc store ( and even we couldn't delete ) .we need to get some inputs from expert toremove from wM outbound store.As of now what I did was, change the below key toflase 

watt.server.publish.drainCSQInOrder=false
Which directly publishes the doc to broker & won't check the doc store (forold doc if any & for serial processing).

结果成功

watt.server.publish.drainCSQInOrder的解释:
If client-side queuing is enabled, this parameter specifies whether IntegrationServer should empty the outbound document store in order or in parallel. Setthis parameter to false to empty the queue in the order in which the documentswere received. Set this parameter to true to empty all documents from the queuesimultaneously or in parallel. The default is “true”.

异常处理总结:

怀疑重启IS的时候,Broker一直在往IS的DocumentStore中publish数据,这些数据IS有无法处理,导致全部过期而被废弃掉了。再次启动IS后,IS将Broker的消息先进先出,原来那些废弃掉的消息无法消费,导致堵塞在那里了。这个配置watt.server.publish.drainCSQInOrder=false是将DocumentStore的过期的消息队列强制跳过了,不再进行消费了,只处理新进入的。

最终还是处理方法出现了问题。broker的queue满了,不需要重启IS的,只需要进行第一种处理就可以了。如果要重启,最好遵循的步骤是:关闭服务是有顺序的,先把Broker关掉(这样就是保证不会有新的消息进入),然后在关掉IS,然后把IS中的DocumentStore下面的文件删掉,然后先启动IS>>再启动Broker。

猜你喜欢

转载自blog.csdn.net/xufengzhu/article/details/53781074