|
@@ -18,11 +18,11 @@ Edited by
|
|
|
|
|
|
Charles Chance
|
|
|
|
|
|
- Copyright © 2011 Marius Bucur
|
|
|
+ Copyright © 2011 Marius Bucur
|
|
|
|
|
|
- Copyright © 2013 Charles Chance, Sipcentric Ltd.
|
|
|
+ Copyright © 2013 Charles Chance, Sipcentric Ltd.
|
|
|
|
|
|
- Copyright © 2015 Olle E. Johansson, Edvina AB
|
|
|
+ Copyright © 2015 Olle E. Johansson, Edvina AB
|
|
|
__________________________________________________________________
|
|
|
|
|
|
Table of Contents
|
|
@@ -39,8 +39,9 @@ Charles Chance
|
|
|
|
|
|
3.1. server_address(str)
|
|
|
3.2. notification_address(str)
|
|
|
- 3.3. num_workers(int)
|
|
|
- 3.4. ping_interval(int)
|
|
|
+ 3.3. multi_notify(int)
|
|
|
+ 3.4. num_workers(int)
|
|
|
+ 3.5. ping_interval(int)
|
|
|
|
|
|
4. Functions
|
|
|
|
|
@@ -67,13 +68,14 @@ Charles Chance
|
|
|
1.1. Example of a KDMQ message
|
|
|
1.2. Set server_address parameter
|
|
|
1.3. Set notification_address parameter
|
|
|
- 1.4. Set num_workers parameter
|
|
|
- 1.5. Set ping_interval parameter
|
|
|
- 1.6. dmq_handle_message usage
|
|
|
- 1.7. dmq_send_message usage
|
|
|
- 1.8. dmq_bcast_message usage
|
|
|
- 1.9. dmq_t_replicate usage
|
|
|
- 1.10. dmq_is_from_node usage
|
|
|
+ 1.4. Set multi_notify parameter
|
|
|
+ 1.5. Set num_workers parameter
|
|
|
+ 1.6. Set ping_interval parameter
|
|
|
+ 1.7. dmq_handle_message usage
|
|
|
+ 1.8. dmq_send_message usage
|
|
|
+ 1.9. dmq_bcast_message usage
|
|
|
+ 1.10. dmq_t_replicate usage
|
|
|
+ 1.11. dmq_is_from_node usage
|
|
|
2.1. dmq_api_t structure
|
|
|
2.2. register_dmq_peer usage
|
|
|
2.3. bcast_message usage
|
|
@@ -93,8 +95,9 @@ Chapter 1. Admin Guide
|
|
|
|
|
|
3.1. server_address(str)
|
|
|
3.2. notification_address(str)
|
|
|
- 3.3. num_workers(int)
|
|
|
- 3.4. ping_interval(int)
|
|
|
+ 3.3. multi_notify(int)
|
|
|
+ 3.4. num_workers(int)
|
|
|
+ 3.5. ping_interval(int)
|
|
|
|
|
|
4. Functions
|
|
|
|
|
@@ -164,15 +167,16 @@ sip:192.168.40.17:5060;status=active
|
|
|
|
|
|
3.1. server_address(str)
|
|
|
3.2. notification_address(str)
|
|
|
- 3.3. num_workers(int)
|
|
|
- 3.4. ping_interval(int)
|
|
|
+ 3.3. multi_notify(int)
|
|
|
+ 3.4. num_workers(int)
|
|
|
+ 3.5. ping_interval(int)
|
|
|
|
|
|
3.1. server_address(str)
|
|
|
|
|
|
The local server address. This is the interface over which the DMQ
|
|
|
engine will send/receive messages.
|
|
|
|
|
|
- Default value is "NULL".
|
|
|
+ Default value is “NULL�.
|
|
|
|
|
|
Example 1.2. Set server_address parameter
|
|
|
...
|
|
@@ -184,32 +188,48 @@ modparam("dmq", "server_address", "sip:10.0.0.20:5060")
|
|
|
The address of another DMQ node from which the local node should
|
|
|
retrieve initial information about all other nodes.
|
|
|
|
|
|
- Default value is "NULL".
|
|
|
+ Default value is “NULL�.
|
|
|
|
|
|
Example 1.3. Set notification_address parameter
|
|
|
...
|
|
|
modparam("dmq", "notification_address", "sip:10.0.0.21:5060")
|
|
|
...
|
|
|
|
|
|
-3.3. num_workers(int)
|
|
|
+3.3. multi_notify(int)
|
|
|
+
|
|
|
+ Enables the ability to resolve multiple IPv4/IPv6 addresses for a
|
|
|
+ single notification address.
|
|
|
+
|
|
|
+ A value of zero resolves to the first IP address found. A non-zero
|
|
|
+ value resolves to all IP addresses associated with the host. This
|
|
|
+ includes addresses from DNS SRV records, A and AAAA records.
|
|
|
+
|
|
|
+ Default value is “0�.
|
|
|
+
|
|
|
+ Example 1.4. Set multi_notify parameter
|
|
|
+...
|
|
|
+modparam("dmq", "multi_notify", 1)
|
|
|
+...
|
|
|
+
|
|
|
+3.4. num_workers(int)
|
|
|
|
|
|
The number of worker threads for sending/receiving messages.
|
|
|
|
|
|
- Default value is "2".
|
|
|
+ Default value is “2�.
|
|
|
|
|
|
- Example 1.4. Set num_workers parameter
|
|
|
+ Example 1.5. Set num_workers parameter
|
|
|
...
|
|
|
modparam("dmq", "num_threads", 4)
|
|
|
...
|
|
|
|
|
|
-3.4. ping_interval(int)
|
|
|
+3.5. ping_interval(int)
|
|
|
|
|
|
The number of seconds between node pings (for checking status of other
|
|
|
nodes).
|
|
|
|
|
|
- Minimum value is "60" (default).
|
|
|
+ Minimum value is “60� (default).
|
|
|
|
|
|
- Example 1.5. Set ping_interval parameter
|
|
|
+ Example 1.6. Set ping_interval parameter
|
|
|
...
|
|
|
modparam("dmq", "ping_interval", 90)
|
|
|
...
|
|
@@ -222,14 +242,14 @@ modparam("dmq", "ping_interval", 90)
|
|
|
4.4. dmq_t_replicate([skip_loop_test])
|
|
|
4.5. dmq_is_from_node()
|
|
|
|
|
|
-4.1. dmq_handle_message()
|
|
|
+4.1. dmq_handle_message()
|
|
|
|
|
|
Handles a DMQ message by passing it to the appropriate local peer
|
|
|
(module). The peer is identified by the user part of the To header.
|
|
|
|
|
|
This function can be used from REQUEST_ROUTE.
|
|
|
|
|
|
- Example 1.6. dmq_handle_message usage
|
|
|
+ Example 1.7. dmq_handle_message usage
|
|
|
...
|
|
|
if(is_method("KDMQ"))
|
|
|
{
|
|
@@ -237,7 +257,7 @@ modparam("dmq", "ping_interval", 90)
|
|
|
}
|
|
|
...
|
|
|
|
|
|
-4.2. dmq_send_message(peer, node, body, content_type)
|
|
|
+4.2. dmq_send_message(peer, node, body, content_type)
|
|
|
|
|
|
Sends a DMQ message directly from config file to a single node.
|
|
|
|
|
@@ -249,13 +269,13 @@ modparam("dmq", "ping_interval", 90)
|
|
|
|
|
|
This function can be used from any route.
|
|
|
|
|
|
- Example 1.7. dmq_send_message usage
|
|
|
+ Example 1.8. dmq_send_message usage
|
|
|
...
|
|
|
dmq_send_message("peer_name", "sip:10.0.0.21:5060", "Message body...", "
|
|
|
text/plain");
|
|
|
...
|
|
|
|
|
|
-4.3. dmq_bcast_message(peer, body, content_type)
|
|
|
+4.3. dmq_bcast_message(peer, body, content_type)
|
|
|
|
|
|
Broadcasts a DMQ message from config file to all active nodes (except
|
|
|
self).
|
|
@@ -267,12 +287,12 @@ text/plain");
|
|
|
|
|
|
This function can be used from any route.
|
|
|
|
|
|
- Example 1.8. dmq_bcast_message usage
|
|
|
+ Example 1.9. dmq_bcast_message usage
|
|
|
...
|
|
|
dmq_bcast_message("peer_name", "Message body...", "text/plain");
|
|
|
...
|
|
|
|
|
|
-4.4. dmq_t_replicate([skip_loop_test])
|
|
|
+4.4. dmq_t_replicate([skip_loop_test])
|
|
|
|
|
|
Replicates the current SIP message to all active nodes (except self).
|
|
|
Useful for replicating REGISTER, PUBLISH etc. in a clustered
|
|
@@ -289,19 +309,19 @@ text/plain");
|
|
|
|
|
|
This function can be used from REQUEST_ROUTE only.
|
|
|
|
|
|
- Example 1.9. dmq_t_replicate usage
|
|
|
+ Example 1.10. dmq_t_replicate usage
|
|
|
...
|
|
|
dmq_t_replicate();
|
|
|
...
|
|
|
|
|
|
-4.5. dmq_is_from_node()
|
|
|
+4.5. dmq_is_from_node()
|
|
|
|
|
|
Checks whether the current message has been sent by another DMQ node in
|
|
|
the cluster.
|
|
|
|
|
|
This function can be used from REQUEST_ROUTE only.
|
|
|
|
|
|
- Example 1.10. dmq_is_from_node usage
|
|
|
+ Example 1.11. dmq_is_from_node usage
|
|
|
...
|
|
|
# Example REGISTER block
|
|
|
if (dmq_is_from_node()) {
|
|
@@ -331,7 +351,7 @@ Chapter 2. Developer Guide
|
|
|
The module provides the following functions that can be used in other
|
|
|
Kamailio modules.
|
|
|
|
|
|
-1. dmq_load_api(dmq_api_t* api)
|
|
|
+1. dmq_load_api(dmq_api_t* api)
|
|
|
|
|
|
This function binds the DMQ module and fills the structure with the
|
|
|
exported functions below.
|
|
@@ -345,7 +365,7 @@ typedef struct dmq_api {
|
|
|
} dmq_api_t;
|
|
|
...
|
|
|
|
|
|
-2. register_dmq_peer(dmq_peer_t* peer)
|
|
|
+2. register_dmq_peer(dmq_peer_t* peer)
|
|
|
|
|
|
Registers an entity as a DMQ peer which permits receiving/sending
|
|
|
messages between nodes which support the same peer.
|
|
@@ -355,7 +375,7 @@ typedef struct dmq_api {
|
|
|
Example to follow.
|
|
|
...
|
|
|
|
|
|
-3. bcast_message(dmq_peer_t* peer, str* body, dmq_node_t* except,
|
|
|
+3. bcast_message(dmq_peer_t* peer, str* body, dmq_node_t* except,
|
|
|
dmq_resp_cback_t* resp_cback, int max_forwards, str* content_type)
|
|
|
|
|
|
Broadcast a DMQ message to all nodes in the DMQ bus excluding self,
|
|
@@ -366,7 +386,7 @@ dmq_resp_cback_t* resp_cback, int max_forwards, str* content_type)
|
|
|
Example to follow.
|
|
|
...
|
|
|
|
|
|
-4. send_message(dmq_peer_t* peer, str* body, dmq_node_t* node,
|
|
|
+4. send_message(dmq_peer_t* peer, str* body, dmq_node_t* node,
|
|
|
dmq_resp_cback_t* resp_cback, int max_forwards, str* content_type)
|
|
|
|
|
|
Send a DMQ message to a single node.
|