【问题标题】:IBM MQ vs JMS - Spring ImplementationIBM MQ 与 JMS - Spring 实现
【发布时间】:2011-11-28 08:03:41
【问题描述】:

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

现在我们被建议不要直接使用 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. 我需要一个连接工厂对象来连接到 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>
    

此外,我在 JMSTemplate 类中注入了上述 2 个 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 的依赖,你认为上面的配置(尤其是连接工厂)看起来不错吗?

【问题讨论】:

  • 那么,您的问题到底是什么? “好看吗?”问题不大。
  • 嗨..我的问题是上面的实现是否使我的代码独立于 IBM MQ。如果将来 IBM MQ 被任何其他技术取代..此代码是否有效

标签: spring jms ibm-mq


【解决方案1】:

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

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

【讨论】:

  • 非常感谢您的即时回复和帮助
  • 嘿..任何链接你想规定哪个谈论用 MQ 以外的东西实现 JMS...
猜你喜欢
  • 2020-09-29
  • 2019-11-03
  • 1970-01-01
  • 2018-10-13
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 2018-04-06
相关资源
最近更新 更多