Skip to content

EVENT_VIRTUAL module

The event_virtual module provides the possibility to have multiple external applications, using different transport protocols, subscribed to the OpenSIPS Event Interface as a single virtual subscriber, for a specific event. When an event is triggered, the event_virtual module notifies the specified transport modules using one of the following policies:

  • PARALLEL - all subscribers (applications) are notified at once
  • FAILOVER - for every event raised, try to notify the subscribers, in the order in which they are given, until the first successful notification. A failed subscriber is skipped for further notifications until the failover timeout passes. For some transport modules (event_stream, event_xmlrpc, event_rabbitmq), in order to properly detect a failure when raising an event, you have to configure synchronous operation through the sync_mode module parameter of the respective module.
  • ROUND-ROBIN - for every event raised, notify the subscribers alternatively, in the order in which they are given (for each raised event notify a different subscriber)

Only one expire value can be used (for the whole virtual subscription), and not one for each individual subscriber.

virtual:policy subscriber_1 [[subscriber_2] …]

Meanings:

  • virtual: - informs the Event Interface that the events sent to this subscriber should be handled by the event_virtual module

  • policy - subscriber notification policy, can have one of the following values: ‘PARALLEL’, ‘FAILOVER’, ‘ROUND-ROBIN’ (with the behaviour described above)

    *!! Important: Policies must always be specified as
    uppercase strings!*
  • subscriber_1 - use the socket syntax for this specific subscriber (eg. “rabbitmq:guest:guest@127.0.0.1:5672/pike”)

The following modules must be loaded before this module: The OpenSIPS event modules which implement the transport protocols used by the subscribers.

The following libraries or applications must be installed before running OpenSIPS with this module loaded:

  • none

The minimum duration in seconds that a failed subscriber is skipped for further notifications. This parameter only affects the FAILOVER policy.

Default value is “30”.

Setting the failover_timeout parameter
...
modparam("event_virtual", "failover_timeout", 5)
...

No exported functions to be used in the configuration file.

The sockets of the subscribers may be separated by any number of spaces or tabs:

Virtual socket
virtual:PARALLEL rabbitmq:guest:guest@127.0.0.1:5672/pike flatstore:/var/log/opensips_proxy.log

Top contributors by DevScore(1), authored commits(2) and lines added/removed(3)

#NameDevScoreCommitsLines++Lines—
1.Vlad Patrascu (@rvlad-patrascu)19989977
2.Liviu Chircu (@liviuchircu)753638
3.Razvan Crainea (@razvancrainea)7564
4.Stefan Darius (@dariusstefan)7413420
5.Bogdan-Andrei Iancu (@bogdan-iancu)311716
6.Peter Lemenkov (@lemenkov)3111

(1) DevScore = author_commits + author_lines_added / (project_lines_added / project_commits) + author_lines_deleted / (project_lines_deleted / project_commits)

(2) including any documentation-related commits, excluding merge commits

(3) ignoring whitespace edits, renamed files and auto-generated files

#NameCommit Activity
1.Stefan Darius (@dariusstefan)Jun 2026 - Jul 2026
2.Razvan Crainea (@razvancrainea)Aug 2015 - Jun 2026
3.Liviu Chircu (@liviuchircu)May 2016 - May 2020
4.Vlad Patrascu (@rvlad-patrascu)Jul 2015 - Oct 2019
5.Bogdan-Andrei Iancu (@bogdan-iancu)Apr 2019 - Apr 2019
6.Peter Lemenkov (@lemenkov)Jun 2018 - Jun 2018

(1) including any documentation-related commits, excluding merge commits

Last edited by: Razvan Crainea (@razvancrainea), Liviu Chircu (@liviuchircu), Vlad Patrascu (@rvlad-patrascu), Peter Lemenkov (@lemenkov).

All documentation files (i.e. .md extension) are licensed under the Creative Common License 4.0