2016-11-30 119 views
1

我成功地與ActiveMQ的配置的Wildfly服務器作爲流動Wildfly 10與JMS(ActiveMQ的)

<subsystem xmlns="urn:jboss:domain:messaging-activemq:1.0"> 
     <server name="default"> 
      <security enabled="false"/> 
      <http-connector name="http-connector" socket-binding="http" endpoint="http-acceptor"/> 
      <http-acceptor name="http-acceptor" http-listener="default"/> 
      <jms-queue name="UpdateQueue" entries="java:/jms/UpdateQueue java:jboss/exported/jms/UpdateQueue"/> 
      <connection-factory name="ConnectionFactory" entries="java:jboss/exported/jms/ConnectionFactory" connectors="http-connector"/> 
     </server> 
    </subsystem> 

中的消息發送/使用缺省天然的javax.jms執行從隊列中成功地接收。

我使用以下配置訪問要發送/接收的JMS隊列。

String EX_JNDI_FACTORY = "org.jboss.naming.remote.client.InitialContextFactory"; 
    String SERVER_URL = "http-remoting://127.0.0.1:8080"; 
    String JMS_FACTORY = "jms/ConnectionFactory"; 
    String QUEUE_NAME = "jms/UpdateQueue"; 

大多數時候該消息的時間太長的時間之間發送和接收,有時它把發送之間的3分收到消息,我不知道這種現象的原因。有任何想法嗎?

+0

'Hello Karim。你可以分享你的代碼+配置來創建一個MDB在野蠻?對於JBoss/wildfly來說,我是一個新手,我正在努力嘗試一個示例運行。 這是我到現在爲止: https://gist.github.com/twimnox/0efea3bbfea53e6f8a49a2b82ed00537 在此先感謝! – Twimnox

回答

0

我的課沒有關閉接收器,會話和連接多次接收。我在qreceiver.receive(0)之後添加了以下代碼,並且一切正常。

try{ 
     if (qreceiver != null){ 
      qreceiver.close(); 
      qreceiver = null; 
     } 

     qsession.close(); 
     qcon.close(); 
    }catch (JMSException e) { 
     e.printStackTrace(); 
    } 
+1

在Java EE容器中處理JMS API時要記住的另一件重要事情是容器爲您管理大量實現細節。請務必下載[JSR 345:Enterprise JavaBeansTM,版本3.2 EJB核心合同和要求]的副本(http://download.oracle.com/otndocs/jcp/ejb-3_2-fr-spec/index.html )文檔並閱讀第16.3.5節「JMS API要求」。有很多JMS API調用你不應該在Java EE容器中進行,這會讓很多人感到困惑。 –