入力を使用してトピックにメッセージを送信し、トピックで公開されたメッセージを表示する簡単なアプリケーションを作成しようとしています。パブリッシャー用とサブスクライバー用の 2 つのコマンド ライン実行可能ファイルがあります。トピックにメッセージを公開すると、メッセージがトピックに送信されていることがわかります。
次のコマンドは、トピックに関するメッセージがあることを示しています (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;
}