Activemq 从WebSphere MQ迁移到活动MQ

Activemq 从WebSphere MQ迁移到活动MQ,activemq,ibm-mq,Activemq,Ibm Mq,有一个类似的问题,它是关闭的,但我会尝试无论如何。 我们的客户希望从WebSphere MQ迁移到活动MQ。在上面提到的问题中,有人说,对于JMS,这种迁移在理论上将包括应用程序的重新配置。我们的客户说他们的应用程序使用自动生成的.bindings文件。那么,仅仅通过编辑.binding文件并将活动MQ的.jar放入java类路径,或者需要一些其他配置,就可以让应用程序与活动MQ一起工作吗 为了检查这一点,我尝试了以下方法 a) 使用JMSAdmin创建WMQ绑定文件。创建QCF和队列后,我就能

有一个类似的问题,它是关闭的,但我会尝试无论如何。
我们的客户希望从WebSphere MQ迁移到活动MQ。在上面提到的问题中,有人说,对于JMS,这种迁移在理论上将包括应用程序的重新配置。我们的客户说他们的应用程序使用自动生成的.bindings文件。那么,仅仅通过编辑.binding文件并将活动MQ的.jar放入java类路径,或者需要一些其他配置,就可以让应用程序与活动MQ一起工作吗

为了检查这一点,我尝试了以下方法

a) 使用JMSAdmin创建WMQ绑定文件。创建QCF和队列后,我就能够通过JMS查找发送消息并发送消息

b) 对于用于生成.bindings文件的AMQ设置,IBM提供了一些示例代码

完成后,我使用完全相同的代码发送消息,消息完美地发送到AMQ和WMQ

下面是我能够互操作的示例代码

public void sendMessages() {

        ConnectionFactory connectionFactory;
        Connection con = null;
        Session session = null;
        MessageProducer producer = null;
        //create initial context properties
        Properties initialContextProperties = new Properties();
        initialContextProperties.put("java.naming.factory.initial", "com.sun.jndi.fscontext.RefFSContextFactory");
        initialContextProperties.put(Context.PROVIDER_URL, "file:/C:/JNDI-Directory/AMQ");
        initialContextProperties.setProperty("transport.jms.security.authentication", "none");

        try {
            InitialContext initialContext = new InitialContext(initialContextProperties);
            //create connection factory object
            //ivtQCF - created connection factory object in IBM-MQ
            connectionFactory = (ConnectionFactory) initialContext.lookup("confact2");
            con = connectionFactory.createConnection();
            con.start();
            session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
            //localq - created queue in IBM-MQ
            Destination destination = (Destination) initialContext.lookup("dest");
            producer = session.createProducer(destination);
            String msg = "SAMPLE MESSAGE PLACED TO QUEUE";
            TextMessage textMessage = session.createTextMessage(msg);
            producer.send(textMessage);
            con.close();
            session.close();
            producer.close();
        } catch (NamingException e) {
            throw new RuntimeException("Unable to send jms messages", e);
        } catch (JMSException e) {
            throw new RuntimeException("Unable to send jms messages", e);
        }
    }

我非常,我不是java程序员,也不了解java生态系统。1.据说JNDI查找需要fscontext.jar和providerutil.jar。我在哪里可以找到它们?您可以从Maven repo下载它们,例如:有一个下载JAR选项。providerutil也是如此2。据说要从activemq服务器复制绑定文件吗?但发行版中没有任何绑定文件。或者ActiveMQBindingsCreation.java是否用于生成绑定文件?(其中的代码似乎没有这样做)。如果您能帮助澄清,我将非常感激。我将所有JAR放在类路径中,但当我尝试运行java cod时,我得到:无法创建JNDI上下文:javax.naming.NoInitialContextException:无法实例化类:com.sun.JNDI.fscontext.RefFSContextFactory[根异常是java.lang.ClassNotFoundException:com.sun.JNDI.fscontext.RefFSContextFactory]这是我的错误,jndi例外。我用错罐子了。