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

时间:2014-05-14 09:00:22

标签: java tibco tibco-ems

我想向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}]

3 个答案:

答案 0 :(得分:7)

我通过修改" tibjmsMsgProducer.java"创建了以下代码。来自我的EMS 8.0"样品"夹。查看此文件夹中的所有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 with Spring-JMS来获得更多"企业级"解。上面的代码要简单得多。

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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