首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jboss-esb fs-listener jbm消息队列溢出

jboss-esb fs-listener jbm消息队列溢出
EN

Stack Overflow用户
提问于 2010-02-23 23:55:02
回答 1查看 2.1K关注 0票数 0

我们有一个jboss esb服务器,它以计划的方式(计划频率为20秒)从文件系统读取文件,并将它们转换为esb消息,然后我们对消息进行解析。

esb服务器上还配置了其他一些提供程序/侦听器(jms)和服务。当其中一个服务出现错误时,会影响上述过程。文件系统提供程序(网关)工作正常,但是接收网关消息的jms-listener不工作,并且大量消息累积在jbm队列(jbm_msg Oracle DB表)中。

这就是问题所在,当我的服务器重新启动时,jbm-queue中的消息在esb中解析了20秒,这是fs-provider的计划频率,再也不会处理消息了,cpu使用率上升到100%并停留在那里。我们相信fs提供程序会以某种方式中断jms提供程序。

有没有我们遗漏的配置。

下面是我们拥有的配置文件: jboss-esb.xml

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<jbossesb-deployment>
<depends>jboss.messaging.destination:service=Queue,name=esb_sita_queue</depends>
</jbossesb-deployment>

谢谢

EN

回答 1

Stack Overflow用户

发布于 2010-03-11 05:42:01

将服务拆分为两个独立的服务,一个处理JMS队列,另一个处理文件轮询器。指定相同的操作管道。这样,您可以获得相同的功能,但不会出现线程问题。还可以在监听程序上使用max-threads attr来指定读取线程的数量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2319547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档