我试图按以下方式监听EMS服务器:
Topic clientTopic = _subscriberSession.CreateTopic(topicName);
TopicSubscriber clientTopicSubscriber = _subscriberSession.CreateSubscriber(clientTopic, selector, true);
clientTopicSubscriber.MessageHandler += new EMSMessageHandler(test_MessageHandler);但是,当我这样做时,会引发异常:
TIBCO.EMS.InvalidDestinationException:‘不允许创建目标’
我知道EMS已被配置为禁用队列和主题创建。不过,我只是想听听这个话题。我也试过"CreateConsumer“。我不明白出了什么问题。我只是试着倾听,而不是创建一个队列或主题。你们知道怎么回事吗?
此外,我正在尝试聆听的主题已经存在并得到了验证。
发布于 2017-04-04 20:54:20
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);
};
}发布于 2017-05-15 08:48:58
即使您只侦听某个主题,默认情况下,您也需要权限才能看到任何通信量。而且,仅仅订阅一个主题需要“订阅”权限。
在您的例子中,您可以添加(用实际的客户端主题替换foo,用用户名替换user1 )。
TOPIC=foo USER=user1 PERM=subscribe
或者,如果您还不想使用权限,只需将simply >‘>通配符添加到topics.conf和queue.conf的一行中,然后重新启动tibemsd:
https://stackoverflow.com/questions/43195797
复制相似问题