ZeroMQ介面函數之 :zmq - 0MQ 輕量級訊息傳輸核心

來源:互聯網
上載者:User

標籤:

zmq(7)      0MQ Manual - 0MQ/3.2.5

Name

zmq – ØMQ 輕量級訊息傳輸核心

Synopsis

#include <znq.h>cc [flags] files –lzmq [libraries]

Description

ØMQ輕量級訊息傳輸核心是一個從標準socket介面的擴充而來的連結庫,這些介面通常是由一些專門的傳送中間裝置來提供。ØMQ提供了一個步訊息傳送、多模式訊息傳送、訊息過濾(訂閱)、對多種傳輸協議無縫接入的集合。

本文檔呈現了ØMQ的概念,描述了ØMQ是怎樣對標準socket進行抽象並為ØMQ庫提供的函數提供了一個參考手冊。

Context

在使用任何ØMQ庫函數之前,必須建立一個ØMQ context。在結束應用程式時,必須銷毀(刪除)這個context。一下函數是用來對context進行操作的。

● 建立一個新的context

zmq_ctx_new(3)

● 操作context的屬性

zmq_ctx_set(3) zmq_ctx_get(3)

● 刪除一個context

zmq_ctx_destroy(3)

● 監視一個context

zmq_ctx_set_monitor(3)

以下被棄用的函數也可以用來建立和刪除context

● 初始化一個context

zmq_init(3)

● 終結一個context

zmq_term(3)

Thread safety(安全執行緒)

ØMQ context 是安全執行緒的,可以根據需要儘可能任意的被多個線程共用,而不需要在調用端添加請求鎖。

除非把一個socket的記憶體整體的從過一個線程移動到一個線程中,否則單個的socket不是安全執行緒的。事實上,這就意味著,應用程式可以在一個線程中用函數zmq_soc ket ()建立一個socket,然後把它傳遞給一個新建立線程,作為這個線程初始化時的一部分。比如,你可以把一個結構體作為一個參數傳遞給函數pthread_create() 。

Multiple contexts

在一個應用程式中可以有多個context共存。這樣應用程式在對context直接進行操作的同時,還可以使用任意多其它庫或者模組,這些模組本身也在像上文中提到的那樣安全執行緒的使用ØMQ。

Messages

一個ØMQ的訊息在應用程式之間或者在同一個程式的不同模組之間傳輸的是一個離散的訊息單元。ØMQ訊息沒有內部的結構,並且從ØMQ自身的角度來看,訊息被看作是不透明的位元據。

下面的函數用來對訊息進行操作:

● 初始化一個訊息

zmq_msg_init(3)  zmq_msg_init_size(3)  zmq_msg_init _data(3)

● 發送和接收訊息

zmq_msg_send(3)  zmq_msg_recv(3)

● 釋放訊息

zmq_msg_close(3)

● 擷取訊息

zmq_msg_data(3)  zmq_msg_size(3)  zmq_msg_mor e(3)

● 設定訊息屬性

zmq_msg_get (3)  zmq_msg_set (3)

● 訊息處理

zmq_msg_copy(3)  zmq_msg_move(3)

Sockets

ØMQ sockets 使用一種抽象的非同步訊息佇列,這通過準確的基於socket類型語義方式實現。查詢zmq_socket (3)函數可以看到都提供了哪些socket類型可使用。

以下提供的函數用來對socket進行操作:

● 建立一個socket

zmq_socket (3)

● 關閉一個socket

zmq_close(3)

● 操作socket屬性

zmq_getsockopt (3)  zmq_setsockopt (3)

● 指定socket 訊息流程

zmq_bind(3)  zmq_connect (3)

● 發送與接收訊息

zmq_msg_send(3)  zmq_msg_recv(3)  zmq_send(3)  zmq_recv(3)

Input/output multiplexing (多路輸入/輸出)

ØMQ為ØMQ socktes和標準socktes均提供了一種使應用程式進行多路輸入/輸出的機制。這種機制映射而來標準的poll()系統調用,在zmq_poll(3)中有更詳細的描述。

Transports

一個ØMQ socket 可以使用多種不同的基礎傳輸機制。每種傳輸機制適合於具體的使用目的,並且每種方式都有它自己的優點和缺點。

● 單一傳輸使用TCP

zmq_tcp(7)

● 可靠的多路廣播傳輸使用 PGM

zmq_pgm(7)

● 進程內部的本地傳輸

zmq_ipc(7)

● 進程內部(線程內部)的本地傳輸

zmq_inproc(7)

Proxies

ØMQ提供了代理來建立扇入和扇出的拓撲方式。一個代理把frontend socket連結到backend socket,並且不透明的在兩個sockte之間傳輸所有的訊息。代理可以不透明的擷取第三方的所有傳輸資料。你可以使用zmq_proxy(3) 在應用程式中使用代理。

Error handling

ØMQ庫函數使用POSIX系統中的標準規定來擷取錯誤資訊。通常來說,這就意味著ØMQ庫函數會返回NULL(如果是返回指標類型)或者返回一個負值(如果是返回int類型),而真正的錯誤值會儲存在errno變數中。

在非POSIX系統中,開發人員們可能會經曆errno變數當前值的情況。zmq_errno()函數就是用來解決這樣的問題的。更多的細節請查看zmq_errno(3)函數。

zmq_strerror()函數用來將ØMQ指定的錯誤值轉換為字串類型的資訊,更多的細節請查看函數zmq_strerror(3)。

Miscellaneous

下面是一些其餘的函數:

● 返回ØMQ 庫的版本號碼

zmq_version(3)

Language bindings

ØMQ庫提為各種語言提供了可供調用的介面。本文檔描寫的借口可以用來給C程式猿使用。本文的意圖旨在,使用其它語言的ØMQ使用者們應該能夠通過本文聯絡到他們自己的語言版本。

語言版本(C++、Python、PHP、Ruby、Java等等)被ØMQ社團的其它成員提供,你可以在ØMQ網站上找到他們。

Authors

This ØMQ manual  page was written by Martin Sustrik < [email protected] > , MartinLucina < [email protected] > , and Pieter  Hintjens < [email protected] > .

Resources

Main website:http://www.zeromq.org/

Report  bugs  to  the ØMQ development  mailing  list:< [email protected]>

Copying

Free use of this software isgranted under the terms of the GNU Lesser General  Public License

(LGPL). For details see the files COPYING and COPYING. LESSER included with the ØMQ distribution.

Website design and content is copyright (c) 2007-2012 iMatix Corporation. Contactus  for professional support. Site content licensed under the Creative Commons  Attribution-Share Alike 3.0 License . ØMQ is copyright (c) Copyright (c) 2007-2012 iMatix Corporation and Contributors . ØMQ is free software licensed under the  LGPL. ØMQ, ZeroMQ, and 0MQ are trade marks of iMatix Corporation. Terms of Use — Privacy Policy

 

譯者:風波

mail : [email protected]

 

ZeroMQ介面函數之 :zmq - 0MQ 輕量級訊息傳輸核心

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.