내 네트워크에서 여러 대의 클라이언트에서 소프트웨어를 실행하고 있습니다. 나는 각 클라이언트간에 메시지를 전달하기위한 솔루션으로 RabbitMQ를 가지고 놀았습니다.RabbitMQ는 특정 클라이언트에게 메시지를 전달할 수 있습니까? 또는 클라이언트 측에서 이러한 검사를 수행해야합니까?
#!/usr/bin/python2
import pika
import time
connection = pika.AsyncoreConnection(pika.ConnectionParameters(
'localhost'))
channel = connection.channel()
def callback(ch, method, properties, body):
# send messages back on certain events
if body == '5':
channel.basic_publish(exchange='',
routing_key='test',
body='works')
print body
channel.queue_declare(queue='test')
channel.basic_consume(callback, queue='test', no_ack=True)
for i in range(0, 8):
channel.basic_publish(exchange='',
routing_key='test',
body='{}'.format(i))
time.sleep(0.5)
channel.close()
사진이는 '채팅 프로그램'의 종류로 :
내 테스트 코드는 이것이다. 각 클라이언트는 지속적으로 메시지를 청취해야합니다. 때로는 클라이언트가 메시지를 서버로 다시 보내야합니다.
이 코드는 작동하지만 문제가 발생했습니다. 아래 코드가 works
메시지를 보내면 RabbitMQ 큐에서 메시지를 다시 가져옵니다. 내 고객 인 생산자와 소비자에게 방금 보낸 메시지를받지 못하게하는 방법이 있습니까?
내가의 형태로 메시지를 보낼 거라고 생각 그래서 내가 RabbitMQ에 내장 된이 기능을 볼 수 없습니다 :
body='{"client_id" : 1, "message" : "this is the message"}'
그럼 내가 그 문자열을 구문 분석하고 client_id
을 확인할 수 있습니다. 클라이언트는 그때 예정된 모든 메시지를 무시할 수 있습니다.
더 좋은 방법이 있습니까? RabbitMQ에 대한 대안을 찾아야합니까?