rabbitmq 消息安全接收与消息持久化

可插拔式:一个插件,安装和写在不影响主程序运行

durable=True  持久,持续地 | 队列持久化

delivery_mode=2  消息持久化

import pika
import time

credentials = pika.PlainCredentials(‘alex‘, ‘alex123‘)
connection = pika.BlockingConnection(pika.ConnectionParameters(
    ‘192.168.14.52‘,credentials=credentials))
channel = connection.channel()

# 声明queue
channel.queue_declare(queue=‘task_queue‘,durable=True)

# n RabbitMQ a message can never be sent directly to the queue, it always needs to go through an exchange.
import sys

message = ‘ ‘.join(sys.argv[1:]) or "Hello World! %s" % time.time()

channel.basic_publish(exchange=‘‘,
                      routing_key=‘task_queue‘,
                      body=message,
                      properties=pika.BasicProperties(
                          delivery_mode=2,  # make message persistent
                      )

                      )
print(" [x] Sent %r" % message)
connection.close()

send_msg_safe

import pika, time

credentials = pika.PlainCredentials(‘alex‘, ‘alex123‘)
connection = pika.BlockingConnection(pika.ConnectionParameters(
    ‘192.168.14.52‘,credentials=credentials))
channel = connection.channel()

def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)
    time.sleep(20)
    print(" [x] Done")
    print("method.delivery_tag", method.delivery_tag)
    ch.basic_ack(delivery_tag=method.delivery_tag)
    #ackownledgement

channel.basic_consume(callback,
                      queue=‘task_queue‘,
                      #no_ack=True
                      )

print(‘ [*] Waiting for messages. To exit press CTRL+C‘)
channel.start_consuming()

recv_msg_safe.py

原文地址:https://www.cnblogs.com/jintian/p/11370901.html

时间: 2024-10-07 22:36:21

rabbitmq 消息安全接收与消息持久化的相关文章

微信公众平台开发【接收消息】接收普通消息

当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上.服务器在解析此数据包,获取相关参数的值从而做出回复.接收普通消息主要包括:文本消息.图片消息.语音消息.视频消息.小视频消息.地理位置消息.链接消息.XML数据包结构和相关参数如下: 1.文本消息 <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fr

SpringBoot整合RabbitMQ之发送接收消息实战

实战前言 前几篇文章中,我们介绍了SpringBoot整合RabbitMQ的配置以及实战了Spring的事件驱动模型,这两篇文章对于我们后续实战RabbitMQ其他知识要点将起到奠基的作用的.特别是Spring的事件驱动模型,当我们全篇实战完毕RabbitMQ并大概了解一下RabbitMQ相关组件的源码时,会发现其中的ApplicationEvent.ApplicationListener.ApplicationEventPublisher跟RabbitMQ的Message.Listener.R

RabbitMQ系列二(构建消息队列)

从AMQP协议可以看出,MessageQueue.Exchange和Binding构成了AMQP协议的核心.下面我们就围绕这三个主要组件,从应用使用的角度全面的介绍如何利用RabbitMQ构建消息队列以及使用过程中的注意事项. 声明MessageQueue: 在RabbitMQ中,无论是生产者发送消息还是消费者接收消息,都首先需要声明一个MessageQueue.这就存在一个问题,是生产者声明还是消费者声明呢?要解决这个问题,首先要明确: 1)消费者是无法订阅或者获取不存在的MessageQue

SpringCloud系列十一:SpringCloudStream(SpringCloudStream 简介、创建消息生产者、创建消息消费者、自定义消息通道、分组与持久化、设置 RoutingKey)

1.概念:SpringCloudStream 2.具体内容 2.1.SpringCloudStream 简介 SpringCloudStream 就是使用了基于消息系统的微服务处理架构.对于消息系统而言一共分为两类:基于应用标准的 JMS.基于协议标准的 AMQP,在整个 SpringCloud 之中支持有 RabbitMQ.Kafka 组件的消息系统.利用 SpringCloudStream 可以实现更加方便的消息系统的整合处理,但是推荐还是基于 RabbitMQ 实现会更好一些. 为什么 S

探讨erlang消息选择性接收和改进

从 rabbitMQ 代码中找到 gen_server2 , 对gen_server进行了一些优化.看到前辈写的博文也提到这个,引发了我的思考.见 gen_server2 - OTP gen_server优化版 . gen_server2 引发的思考 正如 litaocheng 所说的: gen_server 和 gen_server2 最大的不同是: gen_server2 收到任何一条消息放到外部的队列中,当VM内部消息队列为空后,才进行消息处理,继续循环 gen_server 收到任何一条

微信公众平台-接收消息与发送被动消息

接收消息代码如下(包含回复消息调用): /// <summary> /// 接收用户消息 /// iftrue /// 2014-07-08 /// </summary> public class Receive { public delegate Models.Send_Msg delegate_SendMsg(string msgType); public delegate void delegate_RececiveHandler(Models.Receive_Msg mod

理解JMS规范中消息的传输模式和消息持久化

JMS规范定义了2种消息传输模式:持久传送模式和非持久传输模式.发送者可以通过如下类似的代码进行设置 TopicPublisher publihser = session.createPublisher(topic); // 设置持久化传输 publihser.setDeliveryMode(DeliveryMode.PERSISTENT); 这种方式对publisher发送的所有消息都有效,相当于是一个全局的效果.如果只是想设置某一个消息的传输模式,可以通过以下代码设置消息头的属性来实现 Te

RabbitMQ系列三 (深入消息队列)

消息持久化是 RabbitMQ 最为人津津乐道的特性之一, RabbitMQ 能够在付出最小的性能代价的基础上实现消息的持久化,最大的奥秘就在于 RabbitMQ 多层消息队列的设计上.下面,本文就从 MessageQueue 的设计和消息在 MessageQueue 的生命周期两个方面全面介绍  RabbitMQ 的消息队列. RabbitMQ完全实现了AMQP协议,类似于一个邮箱服务.Exchange负责根据ExchangeType和RoutingKey将消息投递到对应的消息队列中,消息队列

ActiveMQ如何接收离线消息

[消息持久化] ActiveMQ持久订阅设置 通过为发布者设置 PERSISTENT传送模式,为订阅者时使用持久订阅,这样可以保证 Pub/Sub 程序接收所有发布的消息. 消息订阅分为非持久订阅(non-durable subscription)和持久订阅(durable subscription),非持久订阅只有当客户端处于激活状态,也就是和 ActiveMQ 保持连接状态才能收到发送到某个主题的消息,而当客户端处于离线状态,这个时间段发到主题的消息将会丢失,永远不会收到.持久订阅时,客户端