Python 本文介绍Python版本的RabbitMQ客户端连接指导,包括RabbitMQ客户端安装,以及生产、消费消息。 使用前请参考收集连接信息收集RabbitMQ所需的连接信息。 准备环境 1. 安装Python3 2. 安装kombu pip3 install kombu 生产消息 SSL认证方式 import ssl import sys from kombu import Connection, Exchange, Producer def Main(argv): cacertfile "certscacertificate.pem" certfile "certsclientrabbitmqcertificate.pem" privatekey "certsclientrabbitmqkey.pem" conn Connection('amqp://XXX:xxx/', loginmethod'EXTERNAL', ssl{ 'cacerts': cacertfile, 'keyfile': privatekey, 'certfile': certfile, 'certreqs': ssl.CERTREQUIRED, 'sslversion': ssl.PROTOCOLTLSv12, }) channel conn.channel() exchange Exchange("exampleexchange", type"direct") producer Producer(exchangeexchange, channelchannel, routingkey"testkey") message "Hello Rabbimtq" producer.publish(message, retryTrue) print('send message: %s' % message) if name 'main': Main(sys.argv) 非SSL认证方式 import sys from kombu import Connection, Exchange, Producer def Main(argv): rabbitmqurl 'amqp://USERNAME:PASSWORD@XXX:xxx/' conn Connection(rabbitmqurl, loginmethod'PLAIN') channel conn.channel() exchange Exchange("exampleexchange", type"direct") producer Producer(exchangeexchange, channelchannel, routingkey"testkey") message "Hello Rabbimtq" producer.publish(message, retryTrue) print('send message: %s' % message) if name 'main': Main(sys.argv) 消费消息 SSL认证方式 import sys import ssl from kombu import Connection, Exchange, Queue, Consumer def Main(argv): cacertfile "certscacertificate.pem" certfile "certsclientrabbitmqcertificate.pem" privatekey "certsclientrabbitmqkey.pem" conn Connection('amqp://XXX:xxx/', loginmethod'EXTERNAL', ssl{ 'cacerts': cacertfile, 'keyfile': privatekey, 'certfile': certfile, 'certreqs': ssl.CERTREQUIRED, 'sslversion': ssl.PROTOCOLTLSv12, }) exchange Exchange("exampleexchange", type"direct") queue Queue(name"examplequeue", exchangeexchange, routingkey"testkey") def processmessage(body, message): print("receive message: %s" % format(body)) message.ack() with Consumer(conn, queuesqueue, callbacks[processmessage], accept["text/plain"]): conn.drainevents(timeout2) if name 'main': Main(sys.argv)