3

我一直在寻找有关如何从使用 IBM Websphere MQ 迁移到仅使用 Weblogic 10.3.x 服务器中的 QueueManager 的问题。这将节省 IBM MQ 的许可成本。我最接近的是finiding一个外部链接,该链接指出IBM示例存在做类似的事情(从MQ转移到标准jms库),但是当我试图点击链接时:http: //www.developer.ibm.com /isv/tech/sampmq.html 它会导致死页:\

更具体地说,我感兴趣

  1. 在我尝试替换以下 com.ibm.mq.* 类时要使用哪些类:
    • MQ环境
    • MQ队列管理器
    • MQGetMessageOptions
    • MQPutMessageOptions
    • 和其他没有明显 javax.jms.* 替代品的类。
  2. 我在此迁移过程中可能遇到的一些细微差别和解决方法。

我们将队列消息转发到的数据库是 Oracle 11 标准(具有高级队列),如果这改变了任何东西,所以基本上我们正在寻找“切断中间人”,可以这么说。您学到的答案将不胜感激!

4

2 回答 2

0

我已经完成了一个同时支持 JBossMQ 和 MQSeries/WebSphere MQ 的应用程序。

我需要的 MQSeries 特定类是

import com.ibm.mq.jms.JMSC;
import com.ibm.mq.jms.MQConnectionFactory;
import com.ibm.mq.jms.MQQueueConnectionFactory;
import com.ibm.mq.jms.MQTopicConnectionFactory;

这些足以创建javax.jms.QueueConnection/TopicConnection.

至于 WebSphere MQ,我是直接连接的。至于 JBossMQ,我使用 JNDI 查找了工厂。

因此,除此之外,只有 JMS。

  1. 所以第一步是重写您的应用程序,以便只有初始化部分使用 WebSphere MQ 特定类(我在上面列出的那些)

  2. 将剩余的 MQ 特定部分替换为queue connection factory应用程序服务器提供的 JNDI/目录查找

  3. 从您的源中删除 MQ 系列特定部件。

这是一个简单的例子,展示了如何发送消息。

于 2013-05-31T13:57:51.353 回答
0

您似乎使用 MQ 的 MQI api,手头没有替代品。除了实际重写 MQ 应用程序逻辑以使用 JMS API 之外,别无他法。

一个好的方法可能是首先使用相同的 WebSphere MQ 服务器迁移到 JMS,因为它允许您以可靠的方式验证结果。

您询问要替换 MQGetOptions 的类。没有单一的一对一替换(甚至 MQI 的某些方面 JMS 无法轻易替换)。大多数 MQPutOptions 和其他选项都可以通过在 JMS 中设置会话和消息的参数来使用。在尝试此开关之前,您确实需要了解 JMS api。

然后,当您让 jms 使用 WebSphere MQ 时,您可以按照 Beryllium 的建议进行操作,但是将库交换到 Weblogic,切换任何引用com.ibm.mq.jms.MQConnectionFactory;,配置新参数并祈祷任何可用的上帝 - 按运行 :)

于 2013-06-02T10:48:52.747 回答