首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tibco EMS -侦听EMS异常“不允许创建目的地”

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

Stack Overflow用户
提问于 2017-04-03 23:12:40
回答 2查看 1.8K关注 0票数 0

我试图按以下方式监听EMS服务器:

代码语言:javascript
复制
Topic clientTopic = _subscriberSession.CreateTopic(topicName);
TopicSubscriber clientTopicSubscriber = _subscriberSession.CreateSubscriber(clientTopic, selector, true);
clientTopicSubscriber.MessageHandler += new EMSMessageHandler(test_MessageHandler);

但是,当我这样做时,会引发异常:

TIBCO.EMS.InvalidDestinationException:‘不允许创建目标’

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

此外,我正在尝试聆听的主题已经存在并得到了验证。

EN

回答 2

Stack Overflow用户

发布于 2017-04-04 20:54:20

代码语言:javascript
复制
        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
EN

Stack Overflow用户

发布于 2017-05-15 08:48:58

即使您只侦听某个主题,默认情况下,您也需要权限才能看到任何通信量。而且,仅仅订阅一个主题需要“订阅”权限。

在您的例子中,您可以添加(用实际的客户端主题替换foo,用用户名替换user1 )。

TOPIC=foo USER=user1 PERM=subscribe

或者,如果您还不想使用权限,只需将simply >‘>通配符添加到topics.conf和queue.conf的一行中,然后重新启动tibemsd:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43195797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档