IBM MQ vs JMS - Spring实现

时间:2011-09-30 09:28:13

标签: spring jms ibm-mq

我正在开发一个Spring应用程序,我们已经实现了通过IBM MQ发送消息的代码。

现在我们被告知不要直接使用MQ API而是使用JMS。

我遵循的步骤:

  1. 创建了一个JNDI名称以连接到配置为:

    的Message队列
    <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>
    
  3. 此外,我在JMSTemplate类中注入了上述两个bean:

    <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的依赖,你认为上面的配置(尤其是连接工厂)看起来不错吗?

1 个答案:

答案 0 :(得分:3)

如果您的代码没有引用任何MQ类(即它仅将该bean引用为JMS ConnectionFactory ,则不会依赖于MQ的任何其他非标准功能,这应该使您的代码很容易移植。

我不打赌转换到另一个产品需要零代码更改(许多JMS实现似乎有一些有趣的特性),但你肯定是在正确的方式。