11import json
2- from .topics import EXCHANGES as MOLECULER_EXCHANGES
32import datetime
43from .service import request_handler , INFO_PACKET_TEMPLATE , event_handler
54
65
76class MoleculerConsumer :
87
9- def __init__ (self , node_id ):
8+ def __init__ (self , node_id , moleculer_topics , namespace = None ):
9+ self .namespace = namespace
10+ self .moleculer_topics = moleculer_topics
1011 self .node_id = node_id
1112 self .is_node_discovered = False
13+ if self .namespace is None :
14+ self .info_template = 'MOL.INFO.{node_id}'
15+ else :
16+ self .info_template = 'MOL-{namespace}.INFO.{node_id}'
17+ if self .namespace is None :
18+ self .res_template = 'MOL.RES.{node_id}'
19+ else :
20+ self .res_template = 'MOL-{namespace}.RES.{node_id}'
21+ if self .namespace is None :
22+ self .pong_template = 'MOL.PONG.{node_id}'
23+ else :
24+ self .pong_template = 'MOL-{namespace}.PONG.{node_id}'
1225
1326 def build_info_package (self ):
1427 info_packet = INFO_PACKET_TEMPLATE
@@ -19,7 +32,7 @@ def build_info_package(self):
1932 def discover (self , channel , basic_deliver , properties , body ):
2033 discover_packet = json .loads (body )
2134 sender = discover_packet ['sender' ]
22- sender_queue = 'MOL.INFO.{node_id}' . format (node_id = sender )
35+ sender_queue = self . info_template . format (node_id = sender , namespace = self . namespace )
2336 info_packet = self .build_info_package () # TODO: reuse same package
2437 channel .basic_publish ('' , sender_queue , json .dumps (info_packet ))
2538
@@ -31,7 +44,7 @@ def info(self, channel, basic_deliver, properties, body):
3144 info_packet = INFO_PACKET_TEMPLATE
3245 info_packet ['sender' ] = self .node_id
3346 info_packet ['services' ][0 ]['nodeID' ] = self .node_id
34- channel .basic_publish (MOLECULER_EXCHANGES ['INFO' ], '' , json .dumps (info_packet ))
47+ channel .basic_publish (self . moleculer_topics . exchanges ['INFO' ], '' , json .dumps (info_packet ))
3548 self .is_node_discovered = True
3649 else :
3750 pass # TODO: save discovered services
@@ -43,7 +56,7 @@ def ping(self, channel, basic_deliver, properties, body):
4356 ping_packet = json .loads (body )
4457 sender_node_id , time = ping_packet ['sender' ], ping_packet ['time' ]
4558 if sender_node_id != self .node_id :
46- sender_exchange = 'MOL.PONG.{node_id}' . format (node_id = sender_node_id )
59+ sender_exchange = self . pong_template . format (node_id = sender_node_id , namespace = self . namespace )
4760 pong_packet = {
4861 'ver' : '2' ,
4962 'sender' : self .node_id ,
@@ -69,7 +82,7 @@ def request(self, channel, basic_deliver, properties, body):
6982 'success' : True ,
7083 'data' : {'result' : 'Response from python node: ' + self .node_id }
7184 }
72- sender_exchange = 'MOL.RES.{node_id}' . format (node_id = sender )
85+ sender_exchange = self . res_template . format (node_id = sender , namespace = self . namespace )
7386 channel .basic_publish ('' , sender_exchange , json .dumps (response_packet ))
7487
7588 def disconnect (self , channel , basic_deliver , properties , body ):
@@ -82,7 +95,7 @@ def response(self, channel, basic_deliver, properties, body):
8295 # TODO: handle responses from other services
8396
8497 def event (self , channel , basic_deliver , properties , body ):
85- print ('EVENT!!!!' )
98+ # print('EVENT!!!!')
8699 event_packet = json .loads (body )
87100 sender , event , data = event_packet ['sender' ], event_packet ['event' ], event_packet ['data' ]
88101 event_handler (sender , event , data )
0 commit comments