是否可以使用 Java 和 JMS 连接到本地 运行 IBM MQ Light?

Is it possible to connect to a locally running IBM MQ Light with Java and JMS?

问题的标题几乎说明了一切:是否可以使用 Java 和 JMS 连接到本地 运行 IBM MQ Light? 在 this post 的评论部分,Rob Nicholson 说这是不可能的,但我想知道情况是否有所改变。遗憾的是,除此评论外,我无法找到明确否定这种可能性的信息。

澄清一下,MQ Light 在本地运行,而不是在 IBM 的 bluemix 中运行。

当然可以将 JMS 与 MQLight 一起使用!

由于 MQLight 支持有线协议 AMQP 1.0,您可以使用 Apache QPid Proton library.

两个文件中的工作示例将向 MQLight 队列生成一条消息。

Main.java

import org.apache.qpid.jms.JmsConnectionFactory;
import javax.jms.*;

public class Main {

    public static void main(String[] args){
        try {
            ConnectionFactory cf = new JmsConnectionFactory("amqp://localhost:5672");
            Connection connection = cf.createConnection();
            Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
            MessageProducer producer = session.createProducer(session.createQueue("QUE.BAR"));
            producer.send(session.createTextMessage("foo bar"));
            producer.close();
            session.close();
            connection.close();
        }catch(JMSException jmsException){
            jmsException.printStackTrace();
        }
    }
}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example.test</groupId>
    <artifactId>mqlight-jms</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.qpid</groupId>
            <artifactId>qpid-jms-client</artifactId>
            <version>0.3.0</version>
        </dependency>
    </dependencies>
</project>