<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> asterisk-users-bounces@lists.digium.com
[mailto:asterisk-users-bounces@lists.digium.com] <b><span style='font-weight:
bold'>On Behalf Of </span></b>Pan B. Christensen<br>
<b><span style='font-weight:bold'>Sent:</span></b> Tuesday, January 11, 2011
5:20 AM<br>
<b><span style='font-weight:bold'>To:</span></b>
asterisk-users@lists.digium.com<br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [asterisk-users] Call
queues on load-balanced asterisks</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<div>

<div>

<div>

<p class=MsoNormal><font size=3 color=black face=Calibri><span
style='font-size:12.0pt;font-family:Calibri;color:black'>Hello Dhaval (and
others),<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 color=black face=Calibri><span
style='font-size:12.0pt;font-family:Calibri;color:black'>&nbsp;<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 color=black face=Calibri><span
style='font-size:12.0pt;font-family:Calibri;color:black'>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.<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 color=black face=Calibri><span
style='font-size:12.0pt;font-family:Calibri;color:black'>&nbsp;<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 color=black face=Calibri><span
style='font-size:12.0pt;font-family:Calibri;color:black'>Let&#8217;s say I
define the queue &quot;IT-support&quot; 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&#8217;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.<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 color=black face=Calibri><span
style='font-size:12.0pt;font-family:Calibri;color:black'>&nbsp;<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 color=black face=Calibri><span
style='font-size:12.0pt;font-family:Calibri;color:black'>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!<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 color=black face=Calibri><span
style='font-size:12.0pt;font-family:Calibri;color:black'>&nbsp;<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 color=black face=Calibri><span
style='font-size:12.0pt;font-family:Calibri;color:black'>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.<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 color=black face=Calibri><span
style='font-size:12.0pt;font-family:Calibri;color:black'>&nbsp;<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 color=black face=Calibri><span
style='font-size:12.0pt;font-family:Calibri;color:black'>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.<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 color=black face=Calibri><span
style='font-size:12.0pt;font-family:Calibri;color:black'>&nbsp;<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 color=black face=Calibri><span
style='font-size:12.0pt;font-family:Calibri;color:black'>With kind regards,<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 color=black face=Calibri><span
style='font-size:12.0pt;font-family:Calibri;color:black'>Pan<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 color=navy face=Calibri><span style='font-size:
12.0pt;font-family:Calibri;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>IMO your best solution to this is going to
be using a database and AGI query to keep a &#8220;quasi-real&#8221; (delayed
by a few ms/sec) picture of the queue activity.&nbsp; 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.&nbsp; Let&#8217;s say that a typical agent interaction occurs
in 60 second chunks.&nbsp; Call 1 comes in to machine 1 and is answered by
agent 100 as you said.&nbsp; Call 2 comes into machine 2 and is answered by
101.&nbsp; When Call 3 comes in, it sees 101 and 102 as busy on both
machines.&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>You can do this, but isn&#8217;t this
really a Kamailio issue?<o:p></o:p></span></font></p>

</div>

</div>

</div>

</div>

</body>

</html>