1

入力を使用してトピックにメッセージを送信し、トピックで公開されたメッセージを表示する簡単なアプリケーションを作成しようとしています。パブリッシャー用とサブスクライバー用の 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;
        }
4

1 に答える 1