spring - IBM MQ 与 JMS - Spring 实现

标签 spring jms ibm-mq

我正在开发一个 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 类中注入(inject)了上述 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 的依赖,您认为上面的配置(尤其是连接工厂)看起来不错吗?

最佳答案

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

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

关于spring - IBM MQ 与 JMS - Spring 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7608434/

相关文章:

java - 使用 Spring、JPA 和 Hibernate 访问在 Jboss 中配置的多个数据库/数据源

timeout - Weblogic 文件存储,发出请求时事务超时

java - 如何检查消息发送到 JMS 队列是否成功?

java - 获取 header 属性的字节流 IBM MQ

java - 扩展 CrudRepository 并仍然使用 Spring Data JPA 为自定义方法创建自己的实现

java - 如何使 Spring 的 @Autowired 在 JUnit 5 扩展中工作?

java - 未使用 JPA 检索日期字段

java - 使用 jms spring 和 activemq 队列的聊天应用程序

java - 为什么我的 liberty 配置会导致未知对象名称错误?

spring-integration - 对集群/高可用性 IBM MQ 管理器的 Spring 集成支持