[SR-Users] Sending PUSH notification asynchronously
Daniel-Constantin Mierla
miconda at gmail.com
Thu Mar 19 10:55:51 CET 2015
You can define as many rtimer processes as you want and tell them to
execute same route block, consuming from the same queue.
Cheers,
Daniel
On 19/03/15 09:39, Mickael Marrache wrote:
>
> Thanks, it helps.
>
>
>
> However, if I create a timer and specify mode to 1, I will only have
> one extra process to send all PUSH notifications. Therefore, at some
> point, this extra process will be continuously busy handling messages
> in the queue, and the queue will grow over and over.
>
>
>
> Is it possible to have a pool of timers fetching from the same message
> queue?
>
>
>
> *From:*Daniel-Constantin Mierla [mailto:miconda at gmail.com]
> *Sent:* Thursday, March 19, 2015 10:28 AM
> *To:* Mickael Marrache; 'Kamailio (SER) - Users Mailing List'
> *Subject:* Re: [SR-Users] Sending PUSH notification asynchronously
>
>
>
> You can delegate to send of the push to a rtimer process using mqueue
> -- see same presentation, the section about tweeting.
>
> Cheers,
> Daniel
>
> On 19/03/15 09:14, Mickael Marrache wrote:
>
> I already looked at your presentation, the PUSH is send synchronously.
>
>
>
> What I'm trying to achieve is sending the PUSH asynchronously. So,
> when I receive an incoming call and the callee has no
> registration, I would like to suspend the transaction and then
> delegate PUSH sending to another process.
>
>
>
> In your presentation, I see the following:
>
>
>
> route[PUSHASYNC] {
>
> if (!is_method("INVITE"))
>
> return;
>
> if(registered("location"))
>
> return;
>
> route(SENDPUSH);
>
> if(!t_suspend()) {
>
> xlog("failed suspending trasaction [$T(id_index):$T(id_label)]\n");
>
> send_reply("501", "Unknown destination");
>
> exit;
>
> }
>
> xdbg("suspended transaction [$T(id_index):$T(id_label)] $fU =>
> $rU\n");
>
> $sht(vtp=>join::$rU) = "" + $T(id_index) + ":" + $T(id_label);
>
> xdbg("htale key value [$sht(vtp=>join::$rU)]\n");
>
> exit;
>
> }
>
>
>
> The route block is not execute asynchronously since it is called
> by the calling block using regular way (i.e. route(PUSHASYNC)).
> Therefore, all these operations are executed by the same process
> which is a worker process. I would like to delegate execution of
> all the route block to a separate process (at least execution of
> the SENDPUSH route block).
>
>
>
> Mickael
>
>
>
> *From:*sr-users [mailto:sr-users-bounces at lists.sip-router.org] *On
> Behalf Of *Daniel-Constantin Mierla
> *Sent:* Thursday, March 19, 2015 10:04 AM
> *To:* Kamailio (SER) - Users Mailing List
> *Subject:* Re: [SR-Users] Sending PUSH notification asynchronously
>
>
>
> Hello,
>
> don't do explicit t_suspend() if you are calling the
> async_task_route() because it is done internally.
>
> I presented a way for async push notifications during the Kamailio
> World Conference 2014, see:
>
> -
> http://www.kamailio.org/events/2014-KamailioWorld/day2/26-Daniel-Constantin.Mierla-Kamailio.cfg-Async.pdf
>
> A video should be also on youtube.
>
> Cheers,
> Daniel
>
> On 19/03/15 08:49, Mickael Marrache wrote:
>
> Hi,
>
>
>
> I'm trying to add PUSH support to my system using Kamailio.
>
>
>
> When a call is received and the callee has no active
> registration, a PUSH is sent to the callee endpoint. In order
> to send this PUSH, my proxy sends an HTTP requests to another
> server that will send the PUSH.
>
>
>
> So, my route block is as follows:
>
>
>
> route[PUSH] {
>
> #Send PUSH notification using a custom module I wrote
>
>
>
> #Suspend transaction execution.
>
> t_on_failure("MANAGE_FAILURE");
>
> if(!t_suspend()) {
>
> send_reply("503", "Service Unavailable");
>
> exit;
>
> }
>
>
>
> $sht(push=>join::$rU) = "" + $T(id_index) + ":" +
> $T(id_label);
>
> exit;
>
> }
>
>
>
> I would like to execute this route block asynchronously (i.e.
> in a separate process).
>
>
>
> I tried using the async_task_route command, and I can see the
> route block is execute in a separate process, however some
> stuffs are broken (e.g. transaction timeout, failure route).
> So, I thought it may be related to the fact asynchronous
> execution is implemented using t_suspend/t_continue and in
> this case, t_suspend/t_continue would be called twice.
>
>
>
> The important point is to make the interaction with the PUSH
> server asynchronous.
>
>
>
> Any idea?
>
>
>
> Thanks,
>
> Mickael
>
>
>
>
>
> _______________________________________________
>
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>
> sr-users at lists.sip-router.org <mailto:sr-users at lists.sip-router.org>
>
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
>
>
> --
>
> Daniel-Constantin Mierla
>
> http://twitter.com/#!/miconda <http://twitter.com/#%21/miconda> - http://www.linkedin.com/in/miconda
>
> Kamailio World Conference, May 27-29, 2015
>
> Berlin, Germany - http://www.kamailioworld.com
>
>
>
> --
> Daniel-Constantin Mierla
> http://twitter.com/#!/miconda <http://twitter.com/#%21/miconda> - http://www.linkedin.com/in/miconda
> Kamailio World Conference, May 27-29, 2015
> Berlin, Germany - http://www.kamailioworld.com
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Kamailio World Conference, May 27-29, 2015
Berlin, Germany - http://www.kamailioworld.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20150319/0bf97aa8/attachment.html>
More information about the sr-users
mailing list