nginx-nats, 云原生消息传递系统 Nginx 客户机模块

分享于 

6分钟阅读

GitHub

  繁體 雙語
NATS client module for Nginx
  • 源代码名称:nginx-nats
  • 源代码网址:http://www.github.com/nats-io/nginx-nats
  • nginx-nats源代码文档
  • nginx-nats源代码下载
  • Git URL:
    git://www.github.com/nats-io/nginx-nats.git
    Git Clone代码到本地:
    git clone http://www.github.com/nats-io/nginx-nats
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/nats-io/nginx-nats
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    nginx

    License MIT

    实现nat客户端的Nginx 模块。

    插件配置:

    nat配置是在主级别指定的部分( 例如。 不在 http 区域内)。

    nats {
     server host1:port1;
    . . .
     server hostN:portN;
     reconnect 2s;
     ping 30s;
     user <username>;
     password <password>;
     }
     http {
    . . ..
     }
    • 可以指定一个或者多个nat服务器。 Nginx 按照列出的顺序进行尝试,并连接到第一个可用的(",第一个可用的",不是"循环"或者其他负载平衡)。
    • 如果无法创建连接或者nat断开连接,则 Nginx 尝试所有列出的服务器,然后在尝试再次连接之前等待指定的reconnect 间隔。 默认重新连接间隔为 1秒。
    • ping 指定 Nginx 向nat服务器发送 消息的间隔。 默认值为 30秒。
    • 如果nat服务器已经配置为需要身份验证,则需要 userpassword。 目前它适用于所有服务器;每个服务器用户/密码身份验证都是未来的。

    插件构建:

    模块只维护与nat的连接,但不能用这些连接进行任何操作。

    任何 Nginx 模块一样,构建 nginx-nat是通过配置 Nginx 构建来引用这个模块,然后构建 Nginx。

    这里模块取决于:

    • OpenSSL ( 目前只是为了随机性,但在未来的安全连接中
    nginx-src-dir$./configure [...]  --add-module=/path/to/github.com/apcera/nginx-nats/src  --add-module=/path/to/module/which/uses/nats  --with-cc-opt=-I${OPENSSLDIR:?}/include "--with-ld-opt=-L${OPENSSLDIR:?}/lib -lssl -lcrypto [...]"nginx-src-dir$ make

    API

    有两个可用的头文件

    • ngx_nats.h --核心功能
    • ngx_nats_json.h --通过JSON对象与nat的交互

    所有的JSON方法。类型和宏常量都开始 ngx_nats_json ( 或者上面的大写版本)。

    ngx_nats.h

    核心类型是 ngx_nats_client_t,它是一个结构类型,因此变量的类型为 ngx_nats_client_t *。 下面的内容是在回调函数之后列出的。

    API的概要如下,请参阅标题和类型的标题。

    基本用法:

    • ngx_nats_add_client() -- register 使用 nginx-nat的客户机
    • ngx_nats_publish() --发布消息,序列化;可选答复其他消息
    • ngx_nats_subscribe() --订阅接收消息
    • ngx_nats_unsubscribe() --结束订阅
    • ngx_nats_create_inbox() --创建一个端点来接收消息的答复

    需要三个回调函数:

    • ngx_nats_connected_pt --作为 (ngx_nats_client_t*).connected
    • ngx_nats_disconnected_pt --作为 (ngx_nats_client_t*).disconnected
    • ngx_nats_handle_msg_pt --作为参数传递给 ngx_nats_subscribe()

    ngx_nats_client_t *client 包含三个成员,应由调用方设置:

    • .connected --回调函数
    • .disconnected --回调函数
    • .data --用于调用方使用的void * 回调数据 blob

    工具:

    • ngx_nats_init_random() --在nginx模块中初始化随机性
    • ngx_nats_next_random()uint32_t: 获得随机性的32-bits
    • ngx_nats_get_local_ip()ngx_addr_t * ( 或者 NULL ) --本地 IP
    ngx_nats_json.h

    JSON结构类型:ngx_nats_json_object_tngx_nats_json_array_tngx_nats_json_value_tngx_nats_json_field_t

    • ngx_nats_json_parse(): 使用提供的分配池将序列化消息解析为JSON结构类型
    • ngx_nats_json_type_name(): 将 NGX_NATS_JSON_* 类型常量转换为字符串名称

    许可证

    ( MIT许可证)

    版权所有( c ) 2012 -2017 Apcera公司。

    若要在取得该软件副本时免费授予任何人,如有下列条件的软件,请免费授予该软件的副本,并与相关的文档文件("软件") 进行许可,包括不受限制的权利,包括以下条件:

    上述版权声明和本许可声明须包括在所有的副本或实质性部分的软件。

    软件是"是",没有任何保证,表示或者隐含,包括但不限于销售,适合特定用途和 NONINFRINGEMENT。 作者或者版权持有人在合同。侵权或者它的他与软件或者它的他用户交易的行为。


    SYS  系统  模块  NAT  Native    
    相关文章