Reputation: 904
What I am aiming to do in my Bridge Selector is something to the effect of what you see here:
(DC in('2','3','4','5','6','8','9','10','20','21','22','23') AND ActivityType in('Begin Day','End Day','Depart Center','Arrive Center','Payment'))
OR
(DC in('2','3','4','5','6') AND ActivityType in('Trip Begin','Trip End'))
Shown here in a multi-line format just so it's easier to read.
Is this valid? Is there a large performance hit with having such a complicated selector? Any help would be very much appreciated.
Upvotes: 3
Views: 1262
Reputation: 69
It's not only the load that impacts the performance. It's also the size of the queue. The load determines how many times per time unit the selector is executed. The size of the queue determines against how many messages it is executed. And of course, if you have load-balanced consumers, then that again multiplies the number of times the selector is executed.
You can also consider creating a bridge (if that is feasible in your situation). Bridge your input queue to another queue and apply the selector on the bridge. Then your consumer can read from the queue without selector.
In that scenario, the selector is applied to each message only once.
Upvotes: 0
Reputation: 904
It is valid. I thought I would communicate some of my findings after implementing the selector in the question...
After doing some testing, messages are being selected by the bridge as expected. There also doesn't appear to any noticeable performance hit when the system is under a moderate load. Due to time constraints I wasn't able to simulate a heavy load, so I can't provide any comments on how it would behave there.
Upvotes: 1