2011-09-30 161 views
2

我正在研究Spring应用程序,我们已经实现了通过IBM MQ发送消息的代码。IBM MQ vs JMS - Spring实现

现在我们已建议不要直接直接使用MQ API,而应使用JMS。我跟着

的步骤:

  1. 创建的JNDI名称来连接到消息队列配置为:

    <bean id="emailQueueDestination" class="org.springframework.jndi.JndiObjectFactoryBean" lazy-init="true"> 
         <property name="jndiName" value="<<JNDI name of Queue" >>/> 
    </bean> 
    
  2. 我需要一个connecton工厂对象连接到JMS提供者和我已将其配置为:

    <bean id="emailQueueConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory"> 
        <property name="queueManager" value="" /> 
         <property name="hostName" value="" /> 
        <property name="channel" value="" /> 
        <property name="port" value="1414" /> 
    </bean> 
    

而且我已经注入上述2种豆在JmsTemplate类:

<bean id="emailQueueTemplate" class="org.springframework.jms.core.JmsTemplate" lazy-init="true"> 
     <property name="connectionFactory" ref="emailQueueConnectionFactory" /> 
     <property name="defaultDestination" ref="emailQueueDestination" /> 
    </bean> 

现在,因为我的目的是消除对MQ API的依赖,你觉得以上(特别是连接工厂)看起来很不错的配置?

+0

那么,你的问题到底是什么?“它看起来不错吗?”其实并不是一个真正的问题 –

+0

嗨..我的问题是上面的实现是否使我的代码独立于IBM MQ。如果IBM MQ将来会被其他任何技术所取代,那么这段代码就可以工作 – user966506

回答

2

如果您的代码不参考任何MQ类(即它引用的bean只是作为一个JMS ConnectionFactory你不依赖于MQ的任何其他非标准的功能,那么这应该让你的代码合理易于移植

我不敢打赌,切换到其他产品将需要零代码更改(许多JMS实现似乎有一些有趣的特性),但你绝对是正确的。

+0

非常感谢您的即时回复和帮助 – user966506

+0

Hey..any您想要说明哪些链接是关于使用除MQ以外的其他内容来实现JMS ... – user966506