2017-04-03 4 views
0

Ich versuche, einen EMS-Server zu hören wie folgt:Tibco EMS - Hören EMS Ausnahme „nicht Ziel erstellen erlaubt“

Topic clientTopic = _subscriberSession.CreateTopic(topicName); 
TopicSubscriber clientTopicSubscriber = _subscriberSession.CreateSubscriber(clientTopic, selector, true); 
clientTopicSubscriber.MessageHandler += new EMSMessageHandler(test_MessageHandler); 

Allerdings, wenn ich dies tun, wird eine Ausnahme ausgelöst:
TIBCO.EMS.InvalidDestinationException: 'Ich darf kein Ziel erstellen'

Ich weiß, dass der EMS so konfiguriert wurde, dass die Erstellung von Warteschlangen und Themen deaktiviert wird. Ich versuche jedoch nur das Thema zu hören. Ich habe auch "CreateConsumer" ausprobiert. Ich verstehe nicht, was falsch läuft. Ich versuche nur zuzuhören und nicht eine Warteschlange oder ein Thema zu erstellen. Weißt du was falsch ist?

Außerdem existiert das Thema, das ich höre, existiert und wurde verifiziert.

Antwort

1
 var context = new LookupContext(environment); 
     var factory = context.Lookup(config.ConnectionFactory) as ConnectionFactory; 
     try 
     { 
      connectionCorp = factory.CreateConnection(); 
     } 
     catch { 
      var connectionFactory = new ConnectionFactory(factory.Url, "Receiver", environment); 
      connectionCorp = connectionFactory.CreateConnection(); 
     } 
     connectionCorp.Start(); 
     sessionCorp = connectionCorp.CreateSession(false, SessionMode.ClientAcknowledge); 
     var queue = context.Lookup(config.Name) as Destination; 
     if(queue is TIBCO.EMS.Topic) 
     { 
      var selector = string.Format("To='{0}' and From='{1}'", config.ToAddress, config.FromAddress); 
      msgConsumer = sessionCorp.CreateConsumer(queue, selector,false); 
      msgConsumer.MessageHandler += (sender, args) => { 
       action(args); 
      }; 
     } 
     else 
     { 
      msgConsumer = sessionCorp.CreateConsumer(queue); 
      msgConsumer.MessageHandler += (sender, args) => { 
       action(args); 
      }; 
     } 
0

Obwohl Sie nur ein Thema hören, benötigen Sie standardmäßig Berechtigungen, um den Datenverkehr zu sehen. Wenn Sie nur ein Thema abonnieren möchten, benötigen Sie die Berechtigung zum Abonnieren.

In Ihrem Fall könnten Sie (ersetzen foo mit Ihrem tatsächlichen Clientbegriffprüfteil und user1 mit Ihrem Benutzernamen)

THEMA = foo USER = user1 PERM add = abonnieren

Oder, wenn Sie nicht wollen Ärgern Sie sich noch mit Berechtigungen, fügen Sie einfach das Platzhalterzeichen '>' in eine Zeile von topics.conf und queue.conf ein und starten tibemsd neu:

>

Verwandte Themen