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)