开发者

jboss-esb fs-listener jbm message queue overflow

开发者 https://www.devze.com 2022-12-21 04:20 出处:网络
We have a jboss esb server which is reading files from the file system in a scheduled way (schedule frequency of 20sec) and convert them into the esb message then we parse the message.

We have a jboss esb server which is reading files from the file system in a scheduled way (schedule frequency of 20sec) and convert them into the esb message then we parse the message.

There are some other providers/listeners (jms) and services configured on the esb servers. When there is an error in one of the services it effects the above process. File system provider (gateway) is working fine but the jms-listener who takes the gateway messages are not working and lots of messages are accumulated in the jbm queue (jbm_msg Oracle DB table).

Here is the problem, when my server is restarted messages in the jbm-queue is parsed in the esb for just 20 seconds which is the scheduled frequency of fs-provider, never process messages again and cpu usage goes up to 100% and stays there. We believe somehow fs-providers interrupts the jms-provider.

Is there any configuration we have been missing out.

Here are the configuration files that we have: jboss-esb.xml

<?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="OneWa开发者_JS百科y">
             <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>

deployment.xml

<jbossesb-deployment>
<depends>jboss.messaging.destination:service=Queue,name=esb_sita_queue</depends>
</jbossesb-deployment>

Thanx


Split the service into 2 separate services, one handling the JMS queue, the other the file poller. Specify the same action pipeline. That way you get the same functionality but without the threading issue. Also use max-threads attr on the listener to specify the number of reading threads.

0

精彩评论

暂无评论...
验证码 换一张
取 消