1. 程式人生 > 程式設計 >關於ZeroMQ 三種模式python3實現方式

關於ZeroMQ 三種模式python3實現方式

ZeroMQ是一個訊息佇列網路庫,實現網路常用技術封裝。在C/S中實現了三種模式,這段時間用python簡單實現了一下,感覺python雖然靈活。但是資料處理不如C++自由靈活。

Request-Reply模式:

客戶端在請求後,服務端必須迴響應

server:

# -*-coding:utf-8 -*-

import zmq 

context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:5555")

while True:
 message = socket.recv()
 print (message)
 socket.send("server response!".encode('utf-8'))

clinet:

# -*-coding:utf-8 -*-

import zmq
import sys

context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5555")

while(True):
 data = input("input your data:")
 if data == 'q':
  sys.exit()

 print(data)
 socket.send(data.encode('utf-8'))

 response = socket.recv();
 print (response) 

Publish-Subscribe模式:

廣播所有client,沒有佇列快取,斷開連線資料將永遠丟失。client可以進行資料過濾。

server:

# -*-coding:utf-8 -*-

import zmq 
context = zmq.Context() 
socket = context.socket(zmq.PUB) 
socket.bind("tcp://127.0.0.1:5000") 
while True: 
 data = input('input your data:')
 socket.send(data.encode('utf-8'))

clinet:

# -*-coding:utf-8 -*-

import time
import zmq 
context = zmq.Context() 
socket = context.socket(zmq.SUB) 
socket.connect("tcp://127.0.0.1:5000") 
socket.setsockopt(zmq.SUBSCRIBE,''.encode('utf-8')) 
while True: 
 print(socket.recv()) 

Parallel Pipeline模式:

由三部分組成,push進行資料推送,work進行資料快取,pull進行資料競爭獲取處理。區別於Publish-Subscribe存在一個數據快取和處理負載。

當連線被斷開,資料不會丟失,重連後資料繼續傳送到對端

server:

# -*-coding:utf-8 -*-

import zmq

context = zmq.Context()

recive = context.socket(zmq.PULL)
recive.connect('tcp://127.0.0.1:5558')


while True:
 data = recive.recv()
 print(data)

work:

# -*-coding:utf-8 -*-

import zmq

context = zmq.Context()

recive = context.socket(zmq.PULL)
recive.connect('tcp://127.0.0.1:5557')

sender = context.socket(zmq.PUSH)
sender.connect('tcp://127.0.0.1:5558')

while True:
 data = recive.recv()
 print(data)
 sender.send(data)

clinet:

# -*-coding:utf-8 -*-
import zmq
import time

context = zmq.Context()
socket = context.socket(zmq.PUSH)

socket.bind('tcp://*:5557')

while True:
 data = input('input your data:')
 print(data)
 socket.send(data.encode('utf-8'))

以上這篇關於ZeroMQ 三種模式python3實現方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。