feat/#63 - fix the send_command and add unit tests
Unit test coverage / pytest (pull_request) Successful in 1m15s
Unit test coverage / pytest (push) Failing after 1m50s
CI for pypl publish / publish-lib (push) Successful in 1m57s
/ build-and-push (push) Successful in 1m59s
Build and Publish Docker Image / build-and-push (push) Successful in 2m12s
Unit test coverage / pytest (pull_request) Successful in 1m15s
Unit test coverage / pytest (push) Failing after 1m50s
CI for pypl publish / publish-lib (push) Successful in 1m57s
/ build-and-push (push) Successful in 1m59s
Build and Publish Docker Image / build-and-push (push) Successful in 2m12s
This commit is contained in:
@@ -128,7 +128,10 @@ class AMQService:
|
||||
swarm_id=self.amq_configuration.amq_adapter.swarm_task_id,
|
||||
**kwargs,
|
||||
)
|
||||
result: Future = self.amq_data_message_handler.send_rpc(route, message)
|
||||
result: Future = asyncio.run_coroutine_threadsafe(
|
||||
self.amq_data_message_handler.send_rpc(route, message),
|
||||
loop=self.backpressure_handler.loop,
|
||||
)
|
||||
self.set_outstanding_future(message, result)
|
||||
return result
|
||||
|
||||
@@ -138,6 +141,28 @@ class AMQService:
|
||||
)
|
||||
return result
|
||||
|
||||
def command(self, service_name: str, fq_method_name: str, **kwargs) -> bool:
|
||||
"""
|
||||
Send a unidirectional Command message to the AMQ service.
|
||||
:param service_name: The service name to receive the RPC message.
|
||||
:param fq_method_name: The fully qualified method name to execute the RPC message.
|
||||
:param kwargs: Additional keyword arguments to be passed to the RPC method.
|
||||
:return: A Future that resolves when the RPC response is received.
|
||||
"""
|
||||
route: Optional[AMQRoute] = self.router.find_route_by_service(service_name)
|
||||
if route is not None:
|
||||
message: DataMessage = self.data_message_factory.create_rpc_message(
|
||||
fq_method_name=fq_method_name,
|
||||
swarm_id=self.amq_configuration.amq_adapter.swarm_task_id,
|
||||
**kwargs,
|
||||
)
|
||||
asyncio.run_coroutine_threadsafe(
|
||||
self.amq_data_message_handler.send_command(route, message),
|
||||
loop=self.backpressure_handler.loop,
|
||||
)
|
||||
return True
|
||||
return False
|
||||
|
||||
def get_unique_instance_id(self) -> int:
|
||||
"""
|
||||
Provides cluster-wide unique instance ID for this AMQ service instance.
|
||||
|
||||
Reference in New Issue
Block a user