2014-05-14 37 views
4

我想向EMS主题发布测试消息,并可以使用某些说明。到目前为止,我已设法做到这一点如何使用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}] 

回答

7

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

此代码使用默认用户和密码向本地EMS发布简单的硬编码文本消息。目标Topic是“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中的连接成本很高,所以我们通常会尝试重用它们。查看所有TIBCO提供的更好设置Java类的示例。如果可以的话,实例化和重用连接。 此外,J2EE或Spring解决方案将支持内置的连接池。

+0

工作很好。任何想法如何设置消息头的属性? – Bala

+1

类似于:msg.setStringProperty(“PROPNAME”,“PROP_VALUE”); – GhislainCote

1

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

+0

同意@Alex Suo。一些示例代码在这里。 http://www.novell.com/documentation/extend52/Docs/help/MP/jms/tutorial/pubSub-1.htm – Priyesh

0

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

相关问题