请您介绍一下如何将消息从生产者传输到交换机再到队列?
vhost_exabgp = "librabbitmq://SNIP!:SNIP!@<server>:5672/exabgp"
conn = kombu.Connection(vhost_exabgp)
exchange_datastore = kombu.Exchange(name="datastore", type="direct", durable=False, auto_delete=False, delivery_mode=1)
producer_exabgp = conn.Producer(exchange=exchange_datastore, routing_key=<router>, serializer="json", auto_declare=False)
msg = simplejson.dumps({'x': 1})
producer_exabgp.publish(msg, exchange=exchange_datastore, routing_key=<router>, serializer="json", delivery_mode=1, mandatory=False, immediate=False)
请注意,combo库不支持“强制”和“立即”。
在兔子节点上,我定义了vhost,创建了默认的Exchange,我还定义了“数据存储”Exchange并在vhost下定义了队列。
当我检查相应的队列时,我看到队列中没有消息,并且在执行上述代码时我没有异常。
你能告诉我如何调试这个并告知出了什么问题?
根据https://www.rabbitmq.com/tutorials/amqp-concepts.html: 当带有路由密钥R的新消息到达直接交换时,如果K = R
,交换机将其路由到队列In [35]: requests.get('http://localhost:15672/api/queues/exabgp', auth=(os.environ['APP_USER'],os.environ['APP_PASSWD'])).json()
Out[35]:
[{u'arguments': {},
u'auto_delete': False,
u'backing_queue_status': {u'avg_ack_egress_rate': 0.0,
u'avg_ack_ingress_rate': 0.0,
u'avg_egress_rate': 0.0,
u'avg_ingress_rate': 0.0,
u'delta': [u'delta', u'undefined', 0, u'undefined'],
u'len': 0,
u'next_seq_id': 0,
u'q1': 0,
u'q2': 0,
u'q3': 0,
u'q4': 0,
u'target_ram_count': u'infinity'},
u'consumer_utilisation': u'',
u'consumers': 0,
u'disk_reads': 0,
u'disk_writes': 0,
u'durable': False,
u'exclusive_consumer_tag': u'',
u'idle_since': u'2015-10-06 18:30:38',
u'memory': 13936,
u'message_bytes': 0,
u'message_bytes_persistent': 0,
u'message_bytes_ram': 0,
u'message_bytes_ready': 0,
u'message_bytes_unacknowledged': 0,
u'messages': 0,
u'messages_details': {u'rate': 0.0},
u'messages_persistent': 0,
u'messages_ram': 0,
u'messages_ready': 0,
u'messages_ready_details': {u'rate': 0.0},
u'messages_ready_ram': 0,
u'messages_unacknowledged': 0,
u'messages_unacknowledged_details': {u'rate': 0.0},
u'messages_unacknowledged_ram': 0,
u'name': u'<router>',
u'node': u'rabbit@<server>',
u'policy': u'',
u'recoverable_slaves': u'',
u'state': u'running',
u'vhost': u'exabgp'}]