RabbitMQ:如何交换和绑定

时间:2015-10-06 19:03:11

标签: python rabbitmq kombu

请您介绍一下如何将消息从生产者传输到交换机再到队列?

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

enter image description here

并在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'}]

0 个答案:

没有答案