2014-10-18 71 views
3

我一直在玩很多Jboss參數,但我一直未能讓我的MDB一次處理超過10個併發消息。這不足以滿足我的需求 - 我需要更多的併發消息處理。我完全沒有想法。有沒有人有什麼建議?Jboss EAP 5.1 - 與IBM Websphere MQ的MDB集成 - 處理的併發消息太少

我MDB(擁有的一切定義爲一個方面域,但移動了它):

@MessageDriven(name = "Incoming Task MDB", activationConfig = { 
    @ActivationConfigProperty(propertyName = "messagingType", propertyValue = "javax.jms.MessageListener"), 
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), 
    @ActivationConfigProperty(propertyName = "destination", propertyValue = "TaskQueue"), 
    @ActivationConfigProperty(propertyName = "useJNDI", propertyValue = "false") }) 
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) 
@TransactionManagement(value = TransactionManagementType.BEAN) 
// @AspectDomain("Task Queue MDB") JBOSS Specific annotation to inject the MQ server session at runtime 
@ResourceAdapter("wmq.jmsra.rar") 
@org.jboss.ejb3.annotation.DefaultActivationSpecs ({ 
    @javax.ejb.ActivationConfigProperty(propertyName = "channel", propertyValue = "..."), 
    @javax.ejb.ActivationConfigProperty(propertyName = "hostName", propertyValue = "..."), 
    @javax.ejb.ActivationConfigProperty(propertyName = "queueManager", propertyValue = "..."), 
    @javax.ejb.ActivationConfigProperty(propertyName = "port", propertyValue = "1414"), 
    @javax.ejb.ActivationConfigProperty(propertyName = "transportType", propertyValue = "CLIENT"), 
    @javax.ejb.ActivationConfigProperty(propertyName = "pollingInterval", propertyValue = "250"), 
    @javax.ejb.ActivationConfigProperty(propertyName = "rescanInterval", propertyValue = "250"), 
    @ActivationConfigProperty(propertyName="minSession",propertyValue="100"), 
    @ActivationConfigProperty(propertyName="maxSession",propertyValue="100") }) 
@org.jboss.ejb3.annotation.Pool (value="StrictMaxPool", maxSize=100, timeout=10000) 
public final class IncomingTaskMDB extends TaskCompletionReportable implements MessageListener { 

的wmq.jmsra.rar版本:

Specification-Title: J2EE Connector Architecture 
Specification-Version: 1.5 
Implementation-Title: WebSphere MQ Resource Adapter 
Implementation-Version: 7.0.1.3-k701-103-100812 
Implementation-Vendor: IBM Corporation 

在我wmq.jmsra.rar - 我修改的ra.xml:

<resourceadapter> 
<resourceadapter-class> 
com.ibm.mq.connector.ResourceAdapterImpl 
</resourceadapter-class> 
<config-property> 
<config-property-name>connectionConcurrency</config-property-name> 
<config-property-type>java.lang.String</config-property-type> 
<config-property-value>100</config-property-value> 
</config-property> 
<config-property> 
<config-property-name>maxConnections</config-property-name> 
<config-property-type>java.lang.String</config-property-type> 
<config-property-value>100</config-property-value> 
</config-property> 

在我的EJB3攔截器-aop.xml文件:

<domain name="Message Driven Bean" extends="Intercepted Bean" inheritBindings="true"> 
     <bind pointcut="execution(public * *->*(..))"> 
     <interceptor-ref name="org.jboss.ejb3.security.AuthenticationInterceptorFactory"/> 
     <interceptor-ref name="org.jboss.ejb3.security.RunAsSecurityInterceptorFactory"/> 
     </bind> 
     <!-- TODO: Authorization? --> 
     <bind pointcut="execution(public * *->*(..))"> 
     <interceptor-ref name="org.jboss.ejb3.tx.CMTTxInterceptorFactory"/> 
     <interceptor-ref name="org.jboss.ejb3.stateless.StatelessInstanceInterceptor"/> 
     <interceptor-ref name="org.jboss.ejb3.tx.BMTTxInterceptorFactory"/> 
     <interceptor-ref name="org.jboss.ejb3.AllowedOperationsInterceptor"/> 
     <interceptor-ref name="org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor"/> 
     <!-- interceptor-ref name="org.jboss.ejb3.interceptor.EJB3InterceptorsFactory"/ --> 
     <stack-ref name="EJBInterceptors"/> 
     </bind> 
     <annotation expr="class(*) AND !class(@org.jboss.ejb3.annotation.Pool)"> 
     @org.jboss.ejb3.annotation.Pool (value="StrictMaxPool", maxSize=100, timeout=10000) 
     </annotation> 

在standardjboss.xml:

<invoker-proxy-binding> 
     <name>message-driven-bean</name> 
     <invoker-mbean>default</invoker-mbean> 
     <proxy-factory>org.jboss.ejb.plugins.jms.JMSContainerInvoker</proxy-factory> 
     <proxy-factory-config> 
     <JMSProviderAdapterJNDI>DefaultJMSProvider</JMSProviderAdapterJNDI> 
     <ServerSessionPoolFactoryJNDI>StdJMSPool</ServerSessionPoolFactoryJNDI> 
     <CreateJBossMQDestination>false</CreateJBossMQDestination> 
     <!-- WARN: Don't set this to zero until a bug in the pooled executor is fixed --> 
     <MinimumSize>1</MinimumSize> 
     <MaximumSize>100</MaximumSize> 
     <KeepAliveMillis>30000</KeepAliveMillis> 
     <MaxMessages>1</MaxMessages> 
     <MDBConfig> 
      <ReconnectIntervalSec>10</ReconnectIntervalSec> 
      <DLQConfig> 
      <DestinationQueue>queue/DLQ</DestinationQueue> 
      <MaxTimesRedelivered>10</MaxTimesRedelivered> 
      <TimeToLive>0</TimeToLive> 
      </DLQConfig> 
     </MDBConfig> 
     </proxy-factory-config> 
    </invoker-proxy-binding> 
+0

在Wildfly 10.1和Wesphere MQ 8.0.0.5上完全相同的問題上掙扎 – dmacke 2016-09-26 21:21:13

回答

1

使用註釋,以增加從wsmq庫所產生的會話。缺省值爲10.

@ActivationConfigProperty(propertyName = "maxPoolDepth", propertyValue = "100"),