Posted: Thu Jun 02, 2005 9:12 am Post subject: MB v5.0 - Subscription Filter Problems
Newbie
Joined: 02 Jun 2005 Posts: 3
I'm having trouble getting subscription filters to work in Message Broker v5.0 (CSD4). I'm having two problems in general:
1. I'm registering and deregistering my subscriptions using the RegSub/DeregSub commands and PersAsPub/DeregAll options with the SYSTEM.BROKER.CONTROL.QUEUE. If I don't do this slowly the broker throws an exeception and I'm left with the ConfigMgr and Broker out of sync. When I view the subscriptions using the Toolkit I may see subscriptions that don't exist on the broker but more often than not I don't see all the Broker subscriptions. I verify this by looking in the BSUBSCRIPTIONS Broker table. I seem to be able to work around this by registering and deregistering slowly, one message every 15 seconds or so. If I do get the ConfigMgr and Broker out of sync is there anyway to get them back in order without manually deleting from the databases?
2. More serious, some filters don't work. I just did a controlled test. I cleaned all subscriptions from the Broker and ConfigMgr so I had a known starting point. Then I registered the following 4 subscription filters with the same Topic, just different target queues. These 4 subscriptions function perfectly, including the filters. I then registered 3 more subscriptions for a different topic. The filters on these subscriptions do not work at all. I can send any data and as long as the topic matches the data is published and the filters ignored.
This is an example filter expression:
Body.GLSiteSectionStructHeader.Company = '409G' OR Body.GLSiteSectionStructHeader.Company = '405G' OR Body.GLSiteSectionStructHeader.Company = '404G' OR Body.GLSiteSectionStructHeader.Company = '408G' OR Body.GLSiteSectionStructHeader.Company = '411G' OR ((Body.GLSiteSectionStruct.Company = '409G' OR Body.GLSiteSectionStruct.Company = '405G' OR Body.GLSiteSectionStruct.Company = '404G' OR Body.GLSiteSectionStruct.Company = '408G' OR Body.GLSiteSectionStruct.Company = '411G') AND Body.GLSiteSectionStruct.Hierarchy = 'C' AND Body.GLSiteSectionStruct.Enabled = 'Y' AND Body.GLSiteSectionStruct.MetaData.Active = 'Y') OR (NOT Body.EOFMessage IS NULL)
The topic for the first group of filters is:
GeneralLedger/SiteSectionStruct/Update/1/0
and the second:
GeneralLedger/GLLocalAccount/Update/1/0
Does anybody know of a solution for these problems? This is very frustrating. I am downloading CSD5 right now to see if it works any better.
What's the best way to check if an element exists in an XML message?
Thanks
BTW, first problem is solved. It was caused by a combination of the Message Flow I was using to register the subscription and not having a DLQ on the queue manager. An exception was occuring that was leaving the SYSTEM.BROKER.CONTROL.QUEUE in a blocked state. Then crazy things would happen ending up with the ConfigMgr getting out of sync.
Now if I can get to the bottom of this filter problem....
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum