47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
import asyncio, sys
|
|
import utils, env_var
|
|
|
|
class Producer:
|
|
def __init__(self, host, port):
|
|
self.host = host
|
|
self.port = port
|
|
|
|
async def send(self, topic, content):
|
|
writer = None
|
|
try:
|
|
reader, writer = await asyncio.open_connection(self.host, self.port)
|
|
|
|
message = {
|
|
"action": "produce",
|
|
"topic": topic,
|
|
"content": content
|
|
}
|
|
|
|
await utils.send_json(writer, message)
|
|
|
|
response = await utils.receive_json(reader)
|
|
|
|
if response and response.get("status") == "OK":
|
|
print(f"[SUCCES] Message enregistré à l'offset {response.get('offset') + 1}.")
|
|
else:
|
|
print("[ERREUR] Le Broker a renvoyé uyne réponse invalide.")
|
|
|
|
except ConnectionError:
|
|
print("[ERREUR] Le Broker est injoignable.")
|
|
except Exception as error:
|
|
print(f"[ERREUR] Une erreur est survenue : {error}")
|
|
finally:
|
|
if writer:
|
|
writer.close()
|
|
await writer.wait_closed()
|
|
|
|
if __name__ == "__main__":
|
|
if len(sys.argv) < 3:
|
|
print("Usage: python producer.py <topic> <message>")
|
|
sys.exit(1)
|
|
|
|
topic_name = sys.argv[1]
|
|
message_content = " ".join(sys.argv[2:])
|
|
|
|
producer = Producer(env_var.HOST, env_var.PORT)
|
|
asyncio.run(producer.send(topic_name, message_content)) |