easymq 用于替代qpid的消息中間件。通信基礎采用tce引擎,提供topic和queue兩種隊列。
mq服務器啟動加載mq條目,建立mq內存對象,提供認證,客戶程序連接時指定mq名稱和認證口令,
管理程序可以動態增加、刪除和監視隊列。
mq持久化支持,根據創建參數控制durable。
easymq第一個版利用可以用python實現,之后考慮資源利用和系統會用c++實現
easymq是tce一個很好的應用。
定位夠輕,夠簡單,暫不考慮負載均橫和自動路由。
實例化mq服務器
1 def start(self):
2 tce.RpcCommunicator.instance().init('easymq.server')
3 ep = tce.RpcEndPoint(host=self.default_host,port=self.default_port)
4 adapter = tce.RpcCommunicator.instance().createAdapter('first',ep)
5 servant = self
6 adapter.addServant(servant)
7 print 'wait for shutdown..'
8 tce.RpcCommunicator.instance().waitForShutdown()
1 server = Server.instance()
2 print 'easymq server launched..'
3 server.init().start()
接收消息
1 import easymq
2
3 def readThread(conn):
4 while True:
5 m = conn.read( )
6 print 'got one:',m
7
8 if __name__=='__main__':
9 easymq.init()
10 conn = easymq.Connection(('127.0.0.1',12301),'test',mode=easymq.READWRITE)
11 conn.open()
12 readThread(conn)
發送消息到接收者
1 import easymq
2
3 if __name__=='__main__':
4 easymq.init()
5
6 conn = easymq.Connection(('127.0.0.1',12301),'test',mode=easymq.WRITE)
7 conn.open()
8 for n in range(100):
9 conn.write(str(n)*10)
10 # waitForShutdown()
11 gevent.sleep(2)