2013-01-25 573 views
3

嗨我是Spring JMS和websphere MQ的新手。可以任何人給我一步一步的過程或例如如何接收來自websphere MQ的消息,並能夠在控制檯中打印該消息 非常感謝您的幫助Spring JMS和Websphere MQ

+0

我發佈了春季MDP /激活規範/網絡在 http://stackoverflow.com/questions/7390286/whats-the-difference-between-activationspec-and-connectionfactory – user3344338

回答

4

下面是使用Spring的MDP /激活規範爲WebSphere MQ

MDP-listener.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"  
    "http://www.springframework.org/dtd/spring-beans.dtd"> 


    <bean id="messageListener" class="com.rohid.samples.SpringMdp" /> 

    <bean class="org.springframework.jms.listener.endpoint.JmsMessageEndpointManager"> 
     <property name="activationSpec"> 
      <bean class="com.ibm.mq.connector.inbound.ActivationSpecImpl"> 
       <property name="destinationType" value="javax.jms.Queue"/> 
       <property name="destination" value="QUEUE1"/> 
       <property name="hostName" value="A.B.C"/> 
        <property name="queueManager" value="QM_"/> 
       <property name="port" value="1414"/> 
       <property name="channel" value="SYSTEM.ADMIN.SVNNN"/> 
       <property name="transportType" value="CLIENT"/> 
       <property name="userName" value="abc"/> 
       <property name="password" value="jabc"/> 
      </bean> 
      </property> 
      <property name="messageListener" ref="messageListener"/> 
      <property name="resourceAdapter" ref="myResourceAdapterBean"/> 
    </bean> 

    <bean id="myResourceAdapterBean" class ="org.springframework.jca.support.ResourceAdapterFactoryBean"> 
     <property name="resourceAdapter"> 
     <bean class="com.ibm.mq.connector.ResourceAdapterImpl"> 
      <property name="maxConnections" value="50"/> 
     </bean> 
     </property> 
     <property name="workManager"> 
     <bean class="org.springframework.jca.work.SimpleTaskWorkManager"/> 
     </property> 
    </bean> 
</beans> 

的web.xml

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/context/mdp-listener.xml</param-value> 
</context-param> 

<listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

SpringMdp

package com.rohid.samples; 

    import javax.jms.JMSException; 
    import javax.jms.Message; 
    import javax.jms.MessageListener; 
    import javax.jms.TextMessage; 

    public class SpringMdp implements MessageListener { 

    public void onMessage(Message message) { 
     try { 
      if(message instanceof TextMessage) { 
       System.out.println(this + " : " + ((TextMessage) message).getText()); 
      } 

     } catch (JMSException ex){ 
      throw new RuntimeException(ex); 
     } 
    } 
    } 
工作示例

'

+0

@Jan:評論這個答案。不要編輯代碼。 – Brian

+0

你可以發佈你的代碼嗎?我試圖用Spring STS來解決這個問題,並且有資源異常。在這裏發佈問題; http://stackoverflow.com/questions/32257686/spring-jms-failing-to-connect-to-websphere-mq-resource-exception – haju

+0

在哪裏配置隊列和細節的QueueManager?這裏只配置ActiveSpec。AS將如何知道連接哪個隊列 – Chinmoy

2

這些是爲WMQ V5.3編寫的,但大多仍然應用。 WMQ管理員所做的更改與連接和配置有關。

developerWorks: The Spring Series

請務必包括WMQ服務器和客戶端對未來崗位的版本,因爲在Java/JMS配置的細節上有所不同。另外,請務必使用與您正在使用的WMQ客戶端或服務器版本相匹配的文檔版本。

2

您可能還想考慮在JMS之上使用Spring集成;這裏有一個示例使用ActiveMQ https://github.com/SpringSource/spring-integration-samples/tree/master/basic/jms - 您只需要將JMS配置更改爲使用MQ。

樣品讀取來自控制檯發送通過JMS消息,由消息驅動適配器讀取,並且寫入到控制檯。

+1

感謝您的答覆和鏈接pshere MQ例子。當我downlad它給了我像20個不同的項目,我的cdnt找到需要的例子或既不運行它。我只是想簡單的例子能夠運行 – nepJava

+0

?困惑?鏈接指向GitHub上關於如何運行它的自述文件的示例。簡單地克隆Github示例回購並按照說明操作。 –

2

我剛剛經歷過這個自己。先從Spring Boot JMS Starter

添加一個bean提供MQQueueConnectionFactory

@Configuration 
@EnableJms 
public class MQConfiguration { 
    @Bean 
    public MQQueueConnectionFactory mqFactory() 
    { 
     MQQueueConnectionFactory factory = null; 
     try { 
      factory  = new MQQueueConnectionFactory(); 
      factory.setHostName("localhost"); 
      factory.setPort(1414); 
      factory.setQueueManager("QM.LOCAL"); 
      factory.setChannel("SYSTEM.DEF.SVRCONN"); 
      factory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP); 
     } 
     catch (JMSException e) { 
      System.out.println(e); 
     } 
     return factory; 
    } 
} 

卸下org.apache.activemq/ActiveMQ的經紀人的依賴,以確保ActiveMQ的不潛行它到底。

添加依賴於com.ibm.mqjms.jar,com.bim.mq.jmqi.jar,dhbcore.jar

運行