繁体   English   中英

如何使用Java将消息发布到EMS主题

[英]How to publish messages to EMS Topic using Java

我想向EMS主题发布一条测试消息,可以使用一些方向。 到目前为止,我已设法做到这一点

import com.tibco.tibjms.TibjmsConnectionFactory;
import com.tibco.tibjms.TibjmsTopicConnectionFactory;

public class Connect {
    public static void main(String[] args) {

        String url = "tcp://host:6600";
        TibjmsConnectionFactory cf = new TibjmsTopicConnectionFactory(url);

        cf.setUserName("user1");
        cf.setUserPassword("");
        System.out.println(cf);
    }
}

产生以下。 如何向主题“topic1”或队列“Q1”发布消息

TopicConnectionFactory[URL=tcp://localhost:6600;clientID=null;Properties={com.tibco.tibjms.factory.password=, com.tibco.tibjms.factory.username=user1}]

我通过修改EMS 8.0“sample”文件夹中的“tibjmsMsgProducer.java”创建了以下代码。 查看此文件夹中的所有Java示例以获取进一步的参考。

此代码使用默认用户和密码将简单的硬编码文本消息发布到本地EMS。 目标主题是“topic1”(在最后一行)。

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

public class tibjmsMsgTopicProducer {

static String serverUrl = "localhost";
static String userName = "admin";
static String password = "admin";

public static void sendTopicMessage(String topicName, String messageStr) {

    Connection connection = null;
    Session session = null;
    MessageProducer msgProducer = null;
    Destination destination = null;

    try {
        TextMessage msg;

        System.out.println("Publishing to destination '" + topicName
                + "'\n");

        ConnectionFactory factory = new com.tibco.tibjms.TibjmsConnectionFactory(
                serverUrl);

        connection = factory.createConnection(userName, password);

        /* create the session */
        session = connection
                .createSession(javax.jms.Session.AUTO_ACKNOWLEDGE);

        /* create the destination */
        destination = session.createTopic(topicName);

        /* create the producer */
        msgProducer = session.createProducer(null);

        /* publish messages */
        /* create text message */
        msg = session.createTextMessage();

        /* set message text */
        msg.setText(messageStr);

        /* publish message */
        msgProducer.send(destination, msg);

        System.out.println("Published message: " + messageStr);

        /* close the connection */
        connection.close();

    } catch (JMSException e) {
        e.printStackTrace();
    }
}

/*-----------------------------------------------------------------------
 * main
 *----------------------------------------------------------------------*/
public static void main(String[] args) {
    tibjmsMsgTopicProducer.sendTopicMessage("topic1",
            "This is the message content !");
}

}

注意:您可能还希望将EMS与Spring-JMS结合使用以获得更“企业级”的解决方案。 上面的代码更简单。

注2:我把方法设为“静态”。 这仅用于演示目的。 JMS中的连接成本很高,因此通常我们会尝试重用它们。 有关更好地设置Java类的信息,请参阅所有TIBCO提供的示例。 如果可以,实例化并重用连接。 此外,J2EE或Spring解决方案将支持内置的连接池。

我有一段时间没有触及EMS - 但基本上EMS只不过是一个JMS实现。 所有特定于实现的内容都已隐藏。 您只需使用标准的JMS方式来发布/发布主题,您可以在Java教程和在线资源中找到很好的示例。 我会在这里保存我丑陋的示例代码:-)

您可以看看@gelnyang构建的这个测试项目 是专门发布EMS消息的类。 在该项目下,您还可以找到其他与EMS相关的功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM