_____ From: [email protected] [mailto:[email protected]] On Behalf Of Pan B. Christensen Sent: Tuesday, January 11, 2011 5:20 AM To: [email protected] Subject: Re: [asterisk-users] Call queues on load-balanced asterisks
Hello Dhaval (and others), As far as I can tell, realtime queue will not solve my problem. I can statically define the same queue with the same members on two machines as well. I was planning to use realtime anyway. The issue is the actual queueing of the incoming calls. Let's say I define the queue "IT-support" with members Local/100 and Local/101 on both machines. The first call comes in and is distributed by Kamailio to Asterisk A, and answered by 100. The next call comes in to Asterisk B, and is answered by 101. At this point, both members are busy. Call 3 now comes in and is sent to Asterisk A, where it waits for a free member. Call 4 comes in and is also sent to Asterisk A, as is Call 5. Then call 6 is sent to Asterisk B. At this point 100 finishes his call and becomes free. Which call is delivered to 100? As far as I can tell, that's a 50/50 chance between call 3 and call 6. This is not correct behaviour! Call 6 should wait until calls 3, 4 and 5 (from the other server) have all been delivered. In the example above: When call 3 comes in, Asterisk A may even try to deliver it to 101, who gets call waiting indication. He will now have two simultaneous calls from the same queue! I have not found any way to share information about calls waiting in the queue, wait times, member states and so on between the two servers. Unless you guys know of a way, I think I'm going to have to ask the customer to change their design to master-slave (with failover) instead of load-balanced. With kind regards, Pan IMO your best solution to this is going to be using a database and AGI query to keep a "quasi-real" (delayed by a few ms/sec) picture of the queue activity. If you kept a database on both machines and ran an AGI with each incoming call to query queue usage on both machines or better yet, query the queue on the remote machine and spawn a short local call to keep that agent busy on the native machine, that would solve this issue. Let's say that a typical agent interaction occurs in 60 second chunks. Call 1 comes in to machine 1 and is answered by agent 100 as you said. Call 2 comes into machine 2 and is answered by 101. When Call 3 comes in, it sees 101 and 102 as busy on both machines. You can do this, but isn't this really a Kamailio issue?
-- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- New to Asterisk? Join us for a live introductory webinar every Thurs: http://www.asterisk.org/hello asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users
