AMQP Python实现,用python发送rabbit mq请求【已解决】

# encoding:utf-8

"""
用于接收发送AMQP消息操作
"""
import json
import time
import pika

class AmqpConnect:
    """AMQP消息收发"""
    def __init__(self,host,port,virtual_host ,rabbitmq_username ,rabbitmq_password ,queue_name ,exchange_name ,routing_key ):
        super().__init__()

        self.host = host
        self.port = port
        self.virtual_host = virtual_host
        self.rabbitmq_username = rabbitmq_username
        self.rabbitmq_password = rabbitmq_password
        self.queue_name = queue_name
        self.exchange_name = exchange_name
        self.routing_key = routing_key

    def amqp_connect(self):
        """amqp链接"""
        connection = pika.BlockingConnection(pika.ConnectionParameters(host=self.host, port=self.port,
                    virtual_host=self.virtual_host,credentials=pika.PlainCredentials(self.rabbitmq_username,
                    self.rabbitmq_password)))
        channel = connection.channel(channel_number=1)
        channel.queue_declare(queue=self.queue_name, durable=True,exclusive=False,auto_delete=False)
        channel.queue_bind(self.queue_name,self.exchange_name,routing_key=self.routing_key)
        self.channel, self.connection = channel, connection
        return self.channel

    @staticmethod
    def join_headers(**kwargs):
        """拼接消息头信息"""
        headers = dict()
        for key, value in kwargs.items():
            headers[str(key)] = value
        return headers

    def publish_message(self,msg,**kwargs):
        """发送amqp消息"""
        headers = AmqpConnect.join_headers(**kwargs)
        AmqpConnect.amqp_connect(self).basic_publish(exchange=self.exchange_name,routing_key=self.routing_key,
                                   properties=pika.BasicProperties(delivery_mode=2, priority=0,headers=headers),body=msg)
        print("Send message {}".format(msg))
        AmqpConnect.amqp_connect(self).close()
        AmqpConnect.amqp_connect(self).connection.close()

    @staticmethod
    def get_timestamp():
        return int(time.time())*1000

message = json.dumps(
  {
            "test": False,
            "orderPro": None,
            "payment": None,
            "rejected": None,
            "own": False,
            "scanDeliver": False,
            "scanDeliverQr": None
  })
head = {"Content-Type":"text/plain;charset=UTF-8"}
AmqpConnect(host="", port="", virtual_host="", rabbitmq_username="",
            rabbitmq_password="", queue_name="", exchange_name="",
                    routing_key="").publish_message(message, **head)

第一次尝试发送AMQP请求。

解析步骤:

第一步:

第一步:Amqpconnect类下面定义一个构造函数,存储rabbit MQ需要的连接信息;

第二步:amqp连接,需要导入pika

第三步:发送ampq消息,我在发送消息的时候,请求头和请求消息没有封装,直接赋值,也可以用封装的请求头和请求消息来发送amqp消息。

参考网址:
https://www.cnblogs.com/suntao-jupyter/p/14603024.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值