【发布时间】:2013-05-09 00:08:19
【问题描述】:
我正在尝试编写一个简单的应用程序来从使用输入向主题发送消息并显示在主题上发布的消息。 有两个命令行可执行文件 - 一个用于发布者,另一个用于订阅者。 当我在某个主题上发布消息时,我可以看到消息被提交到该主题。
以下命令显示该主题有消息(见F1.gif):-
show stat EMS.Test.Topic
以下命令显示消息正在被订阅者消费(参见 F2.gif)
show stat consumers topic=EMS.Test.Topic
但是,我无法通过 EMS .NET API 检索消息。它卡在Message msg = subscriber.Receive(); 上。我确保连接详细信息和身份验证详细信息正确,因为它们在发布消息时使用。
public string ReceiveMessagesFromTopic(string topicName)
{
TopicConnection connection = null;
string messageFromPublisher = string.Empty;
try
{
var factory = new TIBCO.EMS.TopicConnectionFactory(serverUrl);
connection = factory.CreateTopicConnection(userName, password);
TopicSession session = connection.CreateTopicSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.CreateTopic(topicName);
TopicSubscriber subscriber = session.CreateSubscriber(topic);
connection.Start();
while (true)
{
Message msg = subscriber.Receive();
if (msg == null)
{
break;
}
if (msg is TextMessage)
{
TextMessage tm = (TextMessage) msg;
messageFromPublisher = tm.Text;
}
}
connection.Close();
}
catch (EMSException e)
{
if (connection!=null)
{
connection.Close();
}
throw;
}
return messageFromPublisher;
}
【问题讨论】:
标签: tibco-ems ems tibco-topic