apppublic/doc/zmq_topic.md
2024-09-23 14:12:00 +08:00

1.5 KiB
Executable File

zmq_topic

zmq_topic implements a topic message machine, it need a TopicServer with created using a server address, publish_port and subscrible_port, and one or more publisher with can publish topiced message and one or more topic message subscriber which comsumes topiced message.

If the server gone, subscriber will not received message, and when the server restart, subscriber will received message again, but the message will miss send by publisher when the server is down.

Usage examples

topic server

from appPublic.zmq_topic import TopicServer

x = TopicServer(address='127.0.0.1', pub_port=5678, sub_port=5679)

publisher

import time
from appPublic.zmq_topic import TopicPublisher
def test_publish(topic):
	p = TopicPublisher(topic=topic, address='127.0.0.1', port=5678)
	cnt = 1
	while True:
		p.send(f'message {cnt}')
		time.sleep(1)
		cnt += 1

if __name__ == '__main__':
	import sys
	if len(sys.argv) < 2:
		print(f'Usage:\n{sys.argv[0]} topic')
		sys.exit(1)
	test_publish(sys.argv[1])

subscriber

from appPublic.zmq_topic import TopicSubscriber
def test_subscribe(topic):
	def print_message(msg):
		print(msg)

	s = TopicSubscriber(topic=topic, address='127.0.0.1', 
				port=5679, callback=print_message)
	s.run()

if __name__ == '__main__':
	import sys
	if len(sys.argv) < 2:
		print(f'Usage:\n{sys.argv[0]} topic')
		sys.exit(1)
	test_subscribe(sys.argv[1])

TopicServer

ConfiguredTopicServer

TopicPublisher

ConfiguredTopicPublisher

TopicSubscribler

ConfiguredTopicSubscribler