从IBM MQ迁移到javax.jms。*(Weblogic)

时间:2013-05-31 11:52:16

标签: oracle11g jms weblogic mq advanced-queuing

我一直在寻找关于如何从使用IBM Websphere MQ迁移到仅使用Weblogic 10.3.x服务器中的QueueManager的日子。这将节省IBM MQ的许可证成本。我最接近的是找到一个外部链接,该链接声明存在类似的IBM示例(从MQ迁移到标准jms库),但当我尝试关注链接时:http://www.developer.ibm.com/isv/tech/sampmq.html   它会导致死页:\

更具体地说,我对

感兴趣
  1. 在尝试替换以下com.ibm.mq. *类时要使用哪些类:
    • MQEnvironment
    • MQQueueManager
    • MQGetMessageOptions
    • MQPutMessageOptions
    • 和其他没有明显javax.jms。*替代的类。
  2. 一些细微差别&我可能会在此迁移过程中遇到的解决方法。
  3. 我们将队列消息转发到的数据库是Oracle 11 Standard(带有高级排队),如果这改变了什么,那么基本上我们正在寻找“切断中间人”,可以这么说。您的学习回复将受到高度赞赏!

2 个答案:

答案 0 :(得分: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. 使用应用程序服务器提供的queue connection factory的JNDI /目录查找替换剩余的MQ特定部分

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

  4. 这是一个简单的example,其中显示了如何发送消息。

答案 1 :(得分:0)

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

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

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

然后,当你有jms使用WebSphere MQ时,你可以按照Beryllium的建议,但是将库交换到Weblogic,切换对com.ibm.mq.jms.MQConnectionFactory;的任何引用,配置新参数并向任何可用的神祈祷 - 按下运行:)