文档章节

rabbitmq消息持久化,避免异常情况下,消息会丢失

testwork
 testwork
发布于 2017/01/17 16:22
字数 202
阅读 126
收藏 0

1) 使用python包amqp

from amqp.basic_message import Message
from amqp.connection import Connection
exchange_name = "pythontest"
msg = "this is a amqp test msg"
conn = Connection(host=host, userid=username, password=password, heartbeat=60)
channel_id = random.randint(1, conn.channel_max)
ch = conn.channel(channel_id)
ch.exchange_declare(exchange_name, 'topic', durable=True, auto_delete=False )
ch.basic_publish(Message(msg,delivery_mode=2), exchange=exchange_name)
print "succ"

注意需要设置 delivery_mode=2 

2) 使用pika包

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

3) 使用Java

AMQP.BasicProperties defaultProp = new AMQP.BasicProperties.Builder().deliveryMode(2).contentType("application/json").contentEncoding("utf-8").build();

注意deliveryMode(2)

Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
// queueDeclare参数说明
// 1:queuename
// 2:durable 是否持久化
// 3:exclusive
// 4:autoDelete 是否自动删除
// 5:arguments
channel.queueDeclare(QUEUE_NAME,true,false,false,null);
channel.exchangeDeclare("javatest", "topic",true);
channel.basicPublish("",QUEUE_NAME,defaultProp,message.getBytes() ); // defaultProp注意使用.
channel.close();
connection.close();

 

备注:在queueDeclare的时候需要设置为持久化.

在发送消息的时候,需要设置deliveryMode(2) 

© 著作权归作者所有

testwork
粉丝 4
博文 74
码字总数 21048
作品 0
崇明
程序员
私信 提问
RabbitMQ消息可靠性分析和应用

RabbitMQ流程简介(带Exchange) RabbitMQ使用一些机制来保证可靠性,如持久化、消费确认及发布确认等。 先看以下这个图: P为生产者,X为中转站(Exchange),红色部分为消息队列,C1、C2为...

编辑之路
01/28
79
0
如何保证消息队列的可靠性传输?

面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费...

李红欧巴
03/20
150
0
【攻克RabbitMQ】常见问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zlt995768025/article/details/81938449 消息什么情况下会丢失?配合mandatory参数或备份交换器来提高程序的健...

周丽同
2018/08/22
0
0
RabbitMQ实战2.消息轮询、响应、持久化

继上篇 RabbitMQ实战1.消息代理 消息轮询分配 如果生产者投递的消息需要运行相当长的时间,且有多个消费者在处理消息,那么RabbitMQ是怎么分配消息的? 新建 new_task.py 新建 worker.py 在三...

章鱼喵_
2018/08/09
0
0
RabbitMQ 实战教程(二) 工作队列

原文出处:梁桂钊的博客 工作队列,又称任务队列,主要思想是避免立即执行资源密集型任务,并且必须等待完成。相反地,我们进行任务调度,我们将一个任务封装成一个消息,并将其发送到队列。...

lianggui
2018/09/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
10
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部