Tibco EMS - 听取EMS异常“不允许创建目的地”

时间:2017-04-03 23:12:41

标签: c# tibco-ems

我正在尝试按如下方式收听EMS服务器:

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

但是,当我这样做时,会抛出异常:
TIBCO.EMS.InvalidDestinationException:'不允许创建目的地

我知道EMS已配置为禁用队列和主题创建。但是我只是想听听这个话题。我也试过“CreateConsumer”。我不明白出了什么问题。我只是想听,而不是创建一个队列或主题。你们知道什么是错的吗?

此外,我正在尝试收听的主题存在且已经过验证。

2 个答案:

答案 0 :(得分: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);
            };
        }

答案 1 :(得分:0)

即使您只是在收听某个主题,默认情况下,您还需要拥有查看任何流量的权限。也只是订阅一个主题需要订阅'权限。

在您的情况下,您可以添加(将foo替换为您的实际客户主题,将user1替换为您的用户名)

TOPIC = foo USER = user1 PERM = subscribe

或者,如果您还不想打扰权限,只需添加'>'将wildcard分成几行topic.conf和queue.conf并重启tibemsd:

>