2016-11-14 33 views
0

私は、WildFly 10.1.0で実行されているjmsリスナーとして動作するアプリケーションを持っています。このred hat referenceに続いてリソースアダプタを設定しました。WildFly 10.1.0でwebsphere MQのJMSリスナーを作成する方法は?

アプリケーションはエラーなく展開され、すべてがokのように見えますが、リスナーはキューからメッセージを取得しません。キューからいくつかのメッセージがランダムに読み出されることがあります。同じコードがTomcatで問題なく実行されます。ここで

は、私のリソースアダプタです:ここ

<subsystem xmlns="urn:jboss:domain:resource-adapters:4.0"> 
<resource-adapters> 
    <resource-adapter id="wmq"> 
     <archive> 
      wmq.jmsra.rar 
     </archive> 
     <transaction-support>NoTransaction</transaction-support> 
     <connection-definitions> 
      <connection-definition class-name="com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl" jndi-name="java:jboss/jms/jmsConnectionFactory" enabled="true" use-java-context="true" pool-name="jmsConnectionFactory"> 
       <config-property name="channel"> 
        SYSTEM.DEF.SVRCONN 
       </config-property> 
       <config-property name="hostName"> 
        172.16.41.76 
       </config-property> 
       <config-property name="transportType"> 
        CLIENT 
       </config-property> 
       <config-property name="queueManager"> 
        QM.DEV.01 
       </config-property> 
       <config-property name="port"> 
        1415 
       </config-property> 
       <security> 
        <application/> 
       </security> 
      </connection-definition> 
     </connection-definitions> 
     <admin-objects> 
      <admin-object class-name="com.ibm.mq.connector.outbound.MQQueueProxy" jndi-name="java:jboss/jms/QUEUE.TEST.IN" pool-name="QUEUE.TEST.IN"> 
       <config-property name="baseQueueName"> 
        QUEUE.TEST.IN 
       </config-property> 
       <config-property name="baseQueueManagerName"> 
        QM.DEV.01 
       </config-property> 
      </admin-object> 
      <admin-object class-name="com.ibm.mq.connector.outbound.MQQueueProxy" jndi-name="java:jboss/jms/QUEUE.TEST.OUT" pool-name="QUEUE.TEST.OUT"> 
       <config-property name="baseQueueName"> 
        QUEUE.TEST.OUT 
       </config-property> 
       <config-property name="baseQueueManagerName"> 
        QM.DEV.01 
       </config-property> 
      </admin-object> 
     </admin-objects> 
    </resource-adapter> 
</resource-adapters> 

は私の接続ファクトリを取得する方法である:ここでは

@Bean(name = "jmsConnectionFactory") 
public ConnectionFactory connectionFactory() throws NamingException { 
    Context ctx = new InitialContext(); 
    ConnectionFactory jmsConnectionFactory = (ConnectionFactory) ctx.lookup("java:jboss/jms/jmsConnectionFactory"); 

    LoggerUtils.logDebug(this.getClass(), "Looking up jms connection factory reference: '{}' -> '{}'", getAppConfigJms().getConnectionFactoryName(), jmsConnectionFactory); 
    return jmsConnectionFactory; 
} 

は私のキューが検索される方法です。

public Queue queueLookup(String queueName) throws NamingException, JMSException { 
    Context ctx = new InitialContext(); 
    Queue queue = (Queue) ctx.lookup(queueName); 

    LoggerUtils.logDebug(this.getClass(), "Looking up jms queue: '{}' -> '{}'", queueName, queue.getQueueName()); 
    return queue; 
} 

リスナーの作成方法は次のとおりです。

public DefaultMessageListenerContainer configureListener(ConnectionFactory connectionFactory, 
    Queue destinationQueue, MessageListener messageListener) throws JMSException { 

    LoggerUtils.logDebug(this.getClass(), "Starting jms listener '{}' for queue: '{}'", messageListener, (destinationQueue != null ? destinationQueue.getQueueName() : null)); 

    DefaultMessageListenerContainer listenerContainer = new DefaultMessageListenerContainer(); 
    listenerContainer.setConnectionFactory(connectionFactory); 
    listenerContainer.setDestinationName(destinationQueue.getQueueName()); 
    listenerContainer.setMessageListener(messageListener); 
    listenerContainer.setConcurrentConsumers(getAppConfigJms().getConcurrentConsumers().intValue()); 
    listenerContainer.setMaxConcurrentConsumers(getAppConfigJms().getMaxConcurrentConsumers().intValue()); 
    return listenerContainer; 
} 

誰も以前に同じ問題があったのですか? WildFly内の接続ファクトリでテストを行うにはどうすればよいですか?

答えて

0

私の問題は解決しました。キューマネージャとキュー名に何か問題がありました。チェックしてすべての名前を修正した後、すべてがうまくいっています。ここで

は私の固定リソースアダプタです:

<subsystem xmlns="urn:jboss:domain:resource-adapters:4.0"> 
<resource-adapters> 
    <resource-adapter id="wmq"> 
     <archive> 
      wmq.jmsra.rar 
     </archive> 
     <transaction-support>NoTransaction</transaction-support> 
     <connection-definitions> 
      <connection-definition class-name="com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl" jndi-name="java:jboss/jms/jmsConnectionFactory" enabled="true" pool-name="jmsConnectionFactory"> 
       <config-property name="hostName"> 
        172.16.41.76 
       </config-property> 
       <config-property name="transportType"> 
        CLIENT 
       </config-property> 
       <config-property name="queueManager"> 
        QM.DEV.01 
       </config-property> 
       <config-property name="port"> 
        1415 
       </config-property> 
       <security> 
        <application/> 
       </security> 
       <validation> 
        <background-validation>false</background-validation> 
       </validation> 
      </connection-definition> 
     </connection-definitions> 
     <admin-objects> 
      <admin-object class-name="com.ibm.mq.connector.outbound.MQQueueProxy" jndi-name="java:jboss/jms/QUEUE.TEST.IN" enabled="true" use-java-context="false" pool-name="QUEUE.TEST.IN"> 
       <config-property name="baseQueueName"> 
        QUEUE.TEST.IN 
       </config-property> 
       <config-property name="baseQueueManagerName"> 
        QM.DEV.01 
       </config-property> 
      </admin-object> 
      <admin-object class-name="com.ibm.mq.connector.outbound.MQQueueProxy" jndi-name="java:jboss/jms/QUEUE.TEST.OUT" enabled="true" use-java-context="false" pool-name="QUEUE.TEST.OUT"> 
       <config-property name="baseQueueName"> 
        QUEUE.TEST.OUT 
       </config-property> 
       <config-property name="baseQueueManagerName"> 
        QM.DEV.01 
       </config-property> 
      </admin-object> 
     </admin-objects> 
    </resource-adapter> 
</resource-adapters> 
関連する問題