2016-09-23 156 views
-1

还有类似的问题Procedure to migrate from IBM MQ to ActiveMQ,它已关闭,但我仍会尝试。 我们的客户希望从WebSphere MQ迁移到Active MQ。在上面提到的问题中,有人说,就JMS而言,理论上的这种迁移将包括应用程序重新配置。我们的客户说他们的应用程序使用自动生成的.bindings文件。那么,是否有可能通过编辑.binding文件并将活动的mq的.jars文件放入java classpath或使用其他配置来使应用程序与Active MQ一起工作?从WebSphere MQ迁移到Active MQ

回答

2

要检查这一点,我尝试以下

一)创建WMQ绑定文件使用JMSAdmin的。一旦我创建了一个QCF和队列,我就可以通过JMS查找发送消息并发送消息。

b)对于设置以产生.bindings文件AMQ,IBM有一些示例代码来generate the bindings file.

一旦这样做是我恰好使用的相同的代码来发送消息和消息被完全发送到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); 
     } 
    } 
+0

我是,我不是一个java程序员,我不知道java生态系统。 1.据说在那里,fscontext.jar和providerutil.jar是JNDI查找所必需的。我可以在哪里找到它们? – kseniyam

+1

您可以从Maven回购站下载它们,例如:https://mvnrepository.com/artifact/com.sun.jndi/fscontext/1.2-beta-3有一个Download JAR选项。与providerutil一样 –

+0

2.据说从activemq服务器复制绑定文件?但发行版中没有任何绑定文件。或者是ActiveMQBindingsCreation.java用于生成绑定文件? (其中的代码似乎没有这样做)。如果你有帮助澄清,将非常感激。 – kseniyam