RabbitMQ(5) - topics
7550 단어 rabbitmq
RabbitMQ(5) - topics
`rabbitmq`의 `topic exchange`는 루트 키를 특정한 모드와 일치시켜 정규 일치하는 방식으로 좋아하는 정보를 수신합니다.
topic exchange
'topic'모드를 사용하려면'routing_key`.반대로 일정한 요구에 따라 이 값을 설정해야 한다.routing_key`는 topic 모드에서 이 값으로 특정 속성을 가진 단어를 선택해야 합니다.
예를 들어 생산자의'routing_key`를 `test1로 설정합니다.test2.test3', 그러면 중귀속 메시지 대기열을 소비하는'routing_key`는 생산자의`routing_와 일치해야 합니다key`.
#
routing_key = 'test1.test2.test3'
channel.basic_publish(exchange='topic_test', routing_key=routing_key, body=message)
#
routing_key = 'test1.*' #
routing_key = '*.test2.*' #
routing_key = 'test3' #
channel.queue_bind(exchange='topic_logs', queue=queue_name, routing_key=binding_key)
예제
생산자는 다음과 같이 순서대로'routing_key`가 A와 B라면 두 소비자의`routing_를 설정해야 한다key`는 각각 메시지를 읽습니다.
#!/usr/bin/env python
# coding=utf-8
import pika
import sys
import time
connection = pika.BlockingConnection(pika.ConnectionParameters(
host='localhost'))
channel = connection.channel()
channel.exchange_declare(exchange='topic_test',
type='topic')
message = "test "
for i in range(20):
for item in ['A', 'B']:
routing_key = item
channel.basic_publish(exchange='topic_test',routing_key=routing_key, body=message+item)
print " [x] Sent %r:%r" % (routing_key, message)
time.sleep(2)
connection.close()
시작 명령은 다음과 같습니다.
python receive.py A
python receive.py B
소비자는 다음과 같습니다.
#!/usr/bin/env python
# coding=utf-8
import pika
import sys
def callback(ch, method, properties, body):
print " [x] %r:%r" % (method.routing_key, body,)
connection = pika.BlockingConnection(pika.ConnectionParameters(
host='localhost'))
channel = connection.channel()
channel.exchange_declare(exchange='topic_test',
type='topic')
result = channel.queue_declare(exclusive=True)
queue_name = result.method.queue
binding_key = sys.argv[1]
print "Usage: %s [binding_key]..." % (sys.argv[1])
channel.queue_bind(exchange='topic_test', queue=queue_name, routing_key=binding_key)
print ' [*] Waiting for logs. To exit press CTRL+C'
channel.basic_consume(callback, queue=queue_name, no_ack=True)
channel.start_consuming()
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
RabbitMQ를 사용하여 다음 주차장 시뮬레이션을 비동기식으로 만들려면 어떻게 해야 합니까?Java의 동시성에 대한 다양한 접근 방식을 배우고 이해하려고 합니다. 저는 주차장 시뮬레이션의 직렬화된 구현을 가지고 있습니다. 프로그램이 대신 Rabbitmq를 사용하도록 만들고 싶습니다. 어떻게 해야 합니까? ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.