我想向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}]
答案 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相关的功能。