[英]Tibco EMS - Listening to EMS Exception “Not allowed to create destination”
我正在嘗試聽EMS服務器,如下所示:
Topic clientTopic = _subscriberSession.CreateTopic(topicName);
TopicSubscriber clientTopicSubscriber = _subscriberSession.CreateSubscriber(clientTopic, selector, true);
clientTopicSubscriber.MessageHandler += new EMSMessageHandler(test_MessageHandler);
但是,當我這樣做時,會引發異常:
TIBCO.EMS.InvalidDestinationException:'不允許創建目的地'
我知道EMS已配置為禁用隊列和主題創建。 但是,我只是想聽聽這個話題。 我也嘗試過“ CreateConsumer”。 我不明白怎么了。 我只是想聽,而不是創建隊列或主題。 你們知道怎么了嗎?
此外,我正在嘗試收聽的主題已存在且已通過驗證。
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);
};
}
即使您只在聽一個主題,默認情況下,您也需要具有查看任何流量的權限。 同樣,僅訂閱主題也需要“訂閱”權限。
在您的情況下,您可以添加(將foo替換為您的實際客戶主題,並將user1替換為您的用戶名)
主題= foo用戶=用戶1 PERM =訂閱
或者,如果您現在還不想打擾權限,只需將'>'通配符添加到topic.conf和queue.conf的一行中,然后重新啟動tibemsd:
>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.