com.ibm.msg.client.wmq.WMQConstants 无法解析

com.ibm.msg.client.wmq.WMQConstants cannot rsolve

我正在使用 java class 实现 IBM MQ 客户端,如下所示;

    import javax.jms.JMSException;

        import com.ibm.msg.client.jms.JmsConnectionFactory;
        import com.ibm.msg.client.jms.JmsFactoryFactory;
        import com.ibm.msg.client.wmq.WMQConstants;

        import javax.jms.JMSContext;
        import javax.jms.Topic;
        import javax.jms.Queue;
        import javax.jms.JMSConsumer;
        import javax.jms.Message;
        import javax.jms.JMSProducer;

   /*
    * Implements both Subscriber and Publisher
    */
    class SharedNonDurableSubscriberAndPublisher implements Runnable {
    private Thread t;
    private String threadName;

    SharedNonDurableSubscriberAndPublisher( String name){
        threadName = name;
        System.out.println("Creating Thread:" +  threadName );
    }

    /*
     * Demonstrates shared non-durable subscription in JMS 2.0
     */
    private void sharedNonDurableSubscriptionDemo(){
        JmsConnectionFactory cf = null;
        JMSContext msgContext = null;

        try {
            // Create Factory for WMQ JMS provider
            JmsFactoryFactory ff = JmsFactoryFactory.getInstance(WMQConstants.WMQ_PROVIDER);
            // Create connection factory
            cf = ff.createConnectionFactory();
            // Set MQ properties
            cf.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, "QM3");
            cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_BINDINGS);
            // Create message context
            msgContext = cf.createContext();

            // Create a topic destination
            Topic fifaScores = msgContext.createTopic("/FIFA2014/UPDATES");

            // Create a consumer. Subscription name specified, required for sharing of subscription.
            JMSConsumer msgCons = msgContext.createSharedConsumer(fifaScores, "FIFA2014SUBID");

            // Loop around to receive publications
            while(true){

                String msgBody=null;

                // Use JMS 2.0 receiveBody method as we are interested in message body only.
                msgBody = msgCons.receiveBody(String.class);

                if(msgBody != null){
                    System.out.println(threadName + " : " + msgBody);
                }
            }
        }catch(JMSException jmsEx){
            System.out.println(jmsEx);
        }
    }

    /*
     * Publisher publishes match updates like current attendance in the stadium, goal score and ball possession by teams.
     */
    private void matchUpdatePublisher(){
        JmsConnectionFactory cf = null;
        JMSContext msgContext = null;
        int nederlandsGoals = 0;
        int chileGoals = 0;
        int stadiumAttendence = 23231;
        int switchIndex = 0;
        String msgBody = "";
        int nederlandsHolding = 60;
        int chileHolding = 40;

        try {
            // Create Factory for WMQ JMS provider
            JmsFactoryFactory ff = JmsFactoryFactory.getInstance(WMQConstants.WMQ_PROVIDER);

            // Create connection factory
            cf = ff.createConnectionFactory();
            // Set MQ properties
            cf.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, "QM3");
            cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_BINDINGS);

            // Create message context
            msgContext = cf.createContext();

            // Create a topic destination
            Topic fifaScores = msgContext.createTopic("/FIFA2014/UPDATES");

            // Create publisher to publish updates from stadium
            JMSProducer msgProducer = msgContext.createProducer();

            while(true){
                // Send match updates
                switch(switchIndex){
                    // Attendance
                    case 0:
                        msgBody ="Stadium Attendence " + stadiumAttendence;
                        stadiumAttendence += 314;
                        break;

                    // Goals
                    case 1:
                        msgBody ="SCORE: The Netherlands: " + nederlandsGoals + " - Chile:" + chileGoals;
                        break;

                    // Ball possession percentage
                    case 2:
                        msgBody ="Ball possession: The Netherlands: " + nederlandsHolding + "% - Chile: " + chileHolding + "%";
                        if((nederlandsHolding > 60) && (nederlandsHolding < 70)){
                            nederlandsHolding -= 2;
                            chileHolding += 2;
                        }else{
                            nederlandsHolding += 2;
                            chileHolding -= 2;
                        }
                        break;
                }

                // Publish and wait for two seconds to publish next update
                msgProducer.send (fifaScores, msgBody);
                try{
                    Thread.sleep(2000);
                }catch(InterruptedException iex){

                }

                // Increment and reset the index if greater than 2
                switchIndex++;
                if(switchIndex > 2)
                    switchIndex = 0;
            }
        }catch(JMSException jmsEx){
            System.out.println(jmsEx);
        }
    }

    /*
     * (non-Javadoc)
     * @see java.lang.Runnable#run()
     */
    public void run() {
        // If this is a publisher thread
        if(threadName == "PUBLISHER"){
            matchUpdatePublisher();
        }else{
            // Create subscription and start receiving publications
            sharedNonDurableSubscriptionDemo();
        }
    }

    // Start thread
    public void start (){
        System.out.println("Starting " +  threadName );
        if (t == null)
        {
            t = new Thread (this, threadName);
            t.start ();
        }
      }
   }

我是 IBM MQ 的新手,不明白如何解析以下导入。

import com.ibm.msg.client.jms.JmsConnectionFactory;
import com.ibm.msg.client.jms.JmsFactoryFactory;
import com.ibm.msg.client.wmq.WMQConstants;

刚刚通过jar解决了其他依赖。请帮忙解决这个问题。

你想要'com.ibm.mq.allclient.jar'。如果您在 INSTALL_DIR/java/lib.

下安装了队列管理器或 MQC8 支持 pac,则可以在磁盘上找到它

我最近使用 IBM MQ 类 for JMS 将消息放入队列并取得了成功。编译前请确保您的构建路径中有以下 jar 文件。您可以 google 这个并下载,或者如果您已经在您的电脑上安装了 WebSphere MQ,那么转到安装文件夹 (WebSphere MQ)/Java/lib 找到 jar 文件:

com.ibm.mq.jmqi.jar

com.ibm.mqjms.jar

jms.jar