jboss esb fs侦听器jbm消息队列溢出
我们有一个JBossESB服务器,它以预定的方式(预定频率为20sec)从文件系统读取文件,并将其转换为esb消息,然后解析消息 esb服务器上配置了其他一些提供者/监听器(jms)和服务。当其中一个服务出现错误时,会影响上述过程。文件系统提供程序(网关)工作正常,但接收网关消息的jms侦听器不工作,大量消息累积在jbm队列(jbm_msg Oracle DB表)中 问题是,当我的服务器重新启动时,jbm队列中的消息在esb中被解析仅20秒(这是fs provider的预定频率),不再处理消息,cpu使用率上升到100%并保持不变。我们相信fs提供者会以某种方式中断jms提供者 是否存在我们遗漏的任何配置 以下是我们拥有的配置文件: jboss-esb.xmljboss esb fs侦听器jbm消息队列溢出,jboss,message-queue,provider,esb,Jboss,Message Queue,Provider,Esb,我们有一个JBossESB服务器,它以预定的方式(预定频率为20sec)从文件系统读取文件,并将其转换为esb消息,然后解析消息 esb服务器上配置了其他一些提供者/监听器(jms)和服务。当其中一个服务出现错误时,会影响上述过程。文件系统提供程序(网关)工作正常,但接收网关消息的jms侦听器不工作,大量消息累积在jbm队列(jbm_msg Oracle DB表)中 问题是,当我的服务器重新启动时,jbm队列中的消息在esb中被解析仅20秒(这是fs provider的预定频率),不再处理消息,
<?xml version = "1.0" encoding = "UTF-8"?>
<jbossesb xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd" parameterReloadSecs="5">
<providers>
<fs-provider name="SitaIstProvider">
<fs-bus busid="gw_sita_ist" >
<fs-message-filter
directory="/ikarussita/IST/IN"
input-suffix=".RCV"
work-suffix=".lck"
post-delete="false"
post-directory="/ikarussita/IST/OK"
post-suffix=".ok"
error-delete="false"
error-directory="/ikarussita/IST/ERR"
error-suffix=".err"/>
</fs-bus>
</fs-provider>
<jms-provider name="SitaESBQueue" connection-factory="ConnectionFactory">
<jms-bus busid="esb_sita_queue">
<jms-message-filter dest-type="QUEUE" dest-name="queue/esb_sita_queue"/>
</jms-bus>
</jms-provider>
</providers>
<services>
<service category="SITA" name="SITA_IST" description="SITA Daemon For ISTCOXH">
<listeners>
<fs-listener name="Sita_Ist_Gateway" busidref="gw_sita_ist" is-gateway="true" schedule-frequency="20" />
<jms-listener name="Jms_Sita_EsbAware" busidref="esb_sita_queue" />
</listeners>
<actions mep="OneWay">
<action name="parse_msg" class="com.celebi.integration.action.sita.inbound.SitaHandler" process="parseMessage" />
<action name="send_ikarus" class="com.celebi.integration.action.ikarus.outbound.fis.FlightJmsSender" />
</actions>
</service>
</services>
</jbossesb>
jbm-queue-service.xml
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.jms.server.destination.QueueService"
name="jboss.messaging.destination:service=Queue,name=esb_sita_queue"
xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
<depends>jboss.messaging:service=PostOffice</depends>
</mbean>
<server>
消息传递:service=ServerPeer
jboss.messaging:service=邮局
deployment.xml
<jbossesb-deployment>
<depends>jboss.messaging.destination:service=Queue,name=esb_sita_queue</depends>
</jbossesb-deployment>
目的地:service=Queue,name=esb\u sita\u Queue
Thanx将服务拆分为两个独立的服务,一个处理JMS队列,另一个处理文件轮询器。指定相同的操作管道。这样,您可以获得相同的功能,但没有线程问题。还可以在侦听器上使用max threads attr来指定读取线程的数量