rabbitmq,python-ack使用者程序示例

rabbitmq,python-ack使用者程序示例,python,rabbitmq,Python,Rabbitmq,我正在寻找python中的基本Rabbitmq ack使用者程序。到目前为止,我有基本的ack制作人程序。但我不知道这是否正确 producer.py 进口鼠兔 凭证=皮卡。凭证'xxxx','1234' hostname=socket.gethostname 参数= pika.ConnectionParametershost=socket.gethostbynamehostname, 端口=5672,虚拟_主机='/',凭据=凭据 连接=pika.BlockingConnectionparam

我正在寻找python中的基本Rabbitmq ack使用者程序。到目前为止,我有基本的ack制作人程序。但我不知道这是否正确

producer.py

进口鼠兔 凭证=皮卡。凭证'xxxx','1234' hostname=socket.gethostname 参数= pika.ConnectionParametershost=socket.gethostbynamehostname, 端口=5672,虚拟_主机='/',凭据=凭据 连接=pika.BlockingConnectionparameters channel=connection.channel msg_props=pika.BasicProperties msg_props.content_type=文本/普通 频道。队列\u declarequeue='hello' 如果channel.basic\u publishexchange=,则路由键为“hello”,正文为“hello” 世界,属性=msg_道具: 已确认打印消息 其他: 打印消息丢失 打印[x]发送“你好,世界!” 连接。关闭 consumer.py

进口鼠兔 凭证=皮卡。凭证'xxxx','1234' hostname=socket.gethostname 参数= pika.ConnectionParametershost=socket.gethostbynamehostname, 端口=5672,虚拟_主机='/',凭据=凭据 连接=pika.BlockingConnectionparameters channel=connection.channel 频道。队列\u declarequeue='hello' def回调、方法、属性、正文: 打印[x]已收到%r%正文 channel.basic\u ackmethod.delivery\u标签 channel.basic\u consumerqueue='hello',在\u message\u callback=callback上, 自动确认=错误 打印“[*]以等待消息。要退出,请按CTRL+C' channel.start\u消费 输出:

Though the message is received at the consumer.py program, the delivery 
note at producer.py says, "Message Lost", but the note should be "Message Acknowledged". 

python中rabbitmq的正确消费者和生产者ack程序是什么?

经过几天的研究,为了得到预期的结果,我终于从以下链接找到了这个程序-

由@Evk回答, ... Basicaks是关于发布者的确认,而不是关于接收者的确认。所以,您将消息发布到代理和代理,所以RabbitMQ本身将在处理此消息时确认或nack否定应答您,例如,当它将其写入磁盘以获取持久消息时,或者当它将其放入队列时。请注意,此处不涉及接收器-它完全位于发布者和RabbitMQ之间

现在,当您在接收方确认消息时(这同样只在接收方和RabbitMQ之间),您会告诉rabbit消息已被处理,可以安全地删除。这样做是为了处理在处理过程中接收器崩溃的情况-然后rabbit将能够将此消息传递给下一个接收器(如果有)

请注意,这种结构的全部目的是分离发布者和接收者——它们不应该相互依赖


如果您有一个接收者,可以有多个接收者,并且您希望确保它处理了您的消息-使用RPC模式:发送消息并等待来自此接收者的另一条消息。

您使用的是哪种python版本?它在Python3.6.Python3.6中运行得非常好,你能发布你的消费程序吗?
Though the message is received at the consumer.py program, the delivery 
note at producer.py says, "Message Lost", but the note should be "Message Acknowledged".