大家都已经很熟悉了RPC了。 比如说nfs就是采用的RPC通信。

尤其SUN RPC 已经成为了C语言开发的经典一种进程间调用机制。

 

openstack 的RPC 机制, 是基于AMQP 活着其他高级消息协议而实现得远程调用机制。

 

而oslo.messaging 在这些消息协议基础上实现了很nice的接口。developer 可以很方便的调用。 

oslo messaging wiki 

 

参考 openstack的developer手册,实现一个RPC 的server端。

http://docs.openstack.org/developer/oslo.messaging/server.html

call_server.py

 1 from oslo_config import cfg
 2 import oslo_messaging
 3 
 4 class ServerControlEndpoint(object):
 5 
 6     target = oslo_messaging.Target(namespace='control',
 7                                    version='2.0')
 8 
 9     def __init__(self, server):
10         print "this is ServerControlEndpoint"
11         self.server = server
12 
13     def stop(self, ctx):
14         if server:
15             self.server.stop()
16 
17 class TestEndpoint(object):
18 
19     def test(self, ctx, arg):
20         print "this is TestEndpoint test server"
21         return arg
22 
23 transport = oslo_messaging.get_transport(cfg.CONF)
24 
25 print "cfg.CONF: ", cfg.CONF
26 print "transport: ", transport
27 target = oslo_messaging.Target(topic='test', server='server1')
28 print "target: ", target
29 endpoints = [
30     ServerControlEndpoint(None),
31     TestEndpoint(),
32 ]
33 server = oslo_messaging.get_rpc_server(transport, target, endpoints,
34                                        executor='blocking')
35 print "server: ", server
36 server.start()
37 server.wait()
View Code

相关文章:

  • 2021-04-24
  • 2021-08-12
  • 2021-04-21
  • 2022-12-23
  • 2021-07-05
  • 2022-12-23
  • 2022-12-23
  • 2021-09-13
猜你喜欢
  • 2021-05-23
  • 2022-12-23
  • 2021-05-09
  • 2021-11-07
  • 2021-11-27
  • 2021-09-28
相关资源
相似解决方案