기초소개
#container-wrap {
    width: 600px;
    margin: 0 auto; /* to center the content */
}
#header {
    height: 160px;
    width: 600px;
}
 
#header h1 a span{
    display: none;
}
 
#header h2 {
    display: none;
}
 
#header h1 a,#header h1 a:hover{
    background-image: url(/local--files/admin:css/logo.gif);
    background-repeat: no-repeat;
    height: 119px;
    width: 381px;
    position: absolute;
    top: 35px;
    left: 0em;
}
 
#top-bar {
    display: none;
}
 
#side-bar {
    display: none;
}
 
#main-content {
    width: 600px;
    padding: 0;
    margin: 0;
}
#page-content { /* pushes the page options to the bottom of the screen */
    min-height: 350px;
}
 
#page-title {
    font-size: 220%;
}
 
h1 {
    font-weight: bold;
    font-size: 200%;
}
 
h2 {
    font-weight: bold;
    font-size: 180%;
}
 
h3 {
   font-weight: bold;
    font-size: 160%;
}
 
h4 {
    font-weight: bold;
    font-size: 140%;
}
 
h5 {
    font-weight: bold;
    font-size: 120%;
}
 
h6 {
    font-weight: bold;
    font-size: 100%;
}
 
sup {
    vertical-align: top;  
}
 
sub {
    vertical-align: bottom;  
}
 
#page-info {
    display: none;
}
 
div.page-tags {
    padding-top: 2em;
}
 
#footer { 
    width: 600px;
    padding: 0;
    margin: 0;
    margin-top: 15px;
    font-size: 75%;
    color: #777;
}
 
#toc {
    background-color: transparent;
    border-style: none;
}
 
blockquote,div.code {
    background-color: transparent;
    border-style: dotted;
    border-color: #000000;
    margin: 0.4em 0;
}
 
ul {
    list-style-type: disc;
}
 
dt {
    line-height: 400%;
    font-weight: bold;
}
 
a {
    text-decoration: none;
    color: #CC0000;
}
 
a:hover {
    text-decoration: none;
    color: #CC0000;
}
 
a.newpage {
    text-decoration: none;
    color: #CC0000;
}
 
#login-status {
    visibility: hidden;
}
 
#search-top-box {
    visibility: hidden;
}

[[/module]]
개요

ØMQ - 가이드 분산 어플리케이션 환경에서 지능형 전송레이어로써 OMQ를 어떻게 사용하는지 설명합니다. By Pieter Hintjens

ØMQ 참조 설명서 OMQ API를 설명합니다. By Martin Sustrik and Martin Lucina

예제 코드

이것은 두개의 다른 원격 Publishers에서 데이타를 수집하여 로컬 Subscribers에게 전문을 보내는 필터를 보여줍니다.

import zmq
import time
context = zmq.Context()

subscriber = context.socket (zmq.SUB)
subscriber.connect ("tcp://192.168.55.112:5556")
subscriber.connect ("tcp://192.168.55.201:7721")
subscriber.setsockopt (zmq.SUBSCRIBE, "NASDAQ")

publisher = context.socket (zmq.PUB)
publisher.bind ("ipc://nasdaq-feed")

while True:
    message = subscriber.recv()
    publisher.send (message)

소개

Ilya Grigorik 글:

ZeroMQ를 시작하는 가장 좋은 방법은 몇가지 실습 예제를 통하는 것입니다. 단연 새로운 개념이 아니며, 쉽게 구현이 가능합니다.

Brian Buchanan 글:

"OMQ에서 비동기라는 것은 물리적 연결 설정, 분리, 재연결과 같은 자체 기능을 통해 효과적으로 해당 사용자에게 전달된다는 것을 의미합니다. 메시지 수신이 가용하지 않을 때는 큐잉될 수 있습니다."

Andrew Cholakian 글:

"특별한 상황을 제외하고는, ZeroMQ를 가지고 시간을 보내다 보면 원시적인 TCP나 UDP 소켓을 사용해야만 된다는 생각은 없어진다."

Martin Lucina and Martin Sustrik 글:

"OMQ는 메시징 시스템이며, 다른 접근방법으로 했을 경우 발생되는 이슈들을 없애 준다. 새로운 API나 복잡한 Wire프로토콜을 사용하는 것보다 OMQ는 배우기 쉽고 한두시간에 네트워크 프로그램을 마스터 할 수 있게 한다. 성능은 소켓과 동일하거나 종종 초과하기도 한다."

Nicholas Piel 글:

"ZeroMQ는 많은 노력없이도 복잡한 통신 시스템을 설계 할 수 있도록하는 메시징 라이브러리입니다."

Zed Shaw 글:

"ZeroMQ는 소켓과 같이 많은 API를 사용하고, 소켓과 같게 느껴집니다. 또한 사용자가 원하는 다양한 메시징 패턴을 제공한다. zmq_socket를 사용하는 것 만으로 multicast, request/reply 등 많은 패턴을 제공합니다."

PT비디오 자료소개

영국 PHP 컨퍼런스에서 Ian Barber씨가 "ZeroMQ가 답이다"라는 제목으로 설명한 영상입니다.

Pieter Hintjens은 0MQ가 어떻게 대규모 분산 어플리케이션을 구축하는데 발생되는 문제들을 풀어 줄것인지를 설명합니다.

Backgrounders 및 백서

  • Martin Sustrik가 broker-based와 brokerless 메시징 방식의 차이점을 설명하고 있다.
  • Pieter Hintjens는 edge-to-edge방식의 신뢰성이 broker-based방식의 신뢰성보다 더 확장가능하고 강력한지를 설명하고 있다.