先介绍rabbmitmq的几个方法:

     // 声明一个队列 -// queue 队列名称
// durable 为true时server重启队列不会消失 (是否持久化)
// exclusive 队列是否是独占的,如果为true只能被一个connection使用,其他连接建立时会抛出异常
// autoDelete 当没有任何消费者使用时,自动删除该队列
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
     /*
* 向server发布一条消息
* 参数1:exchange名字,若为空则使用默认的exchange
* 参数2:routing key
* 参数3:其他的属性
* 参数4:消息体
* RabbitMQ默认有一个exchange,叫default exchange,它用一个空字符串表示,它是direct exchange类型,
* 任何发往这个exchange的消息都会被路由到routing key的名字对应的队列上,如果没有对应的队列,则消息会被丢弃
*/
channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));
        // 同一时刻服务器只会发一条消息给消费者(能者多劳模式)
channel.basicQos();
     /*消息消费完成确认
* autoAck 是否自动确认 true自动确认 false手动确认
* 模式1:自动确认 只要消息从队列中获取,无论消费者获取到消息后是否成功消息,都认为是消息已经成功消费。
* 模式2:手动确认
* 消费者从队列中获取消息后,服务器会将该消息标记为不可用状态,等待消费者的反馈,如果消费者一直没有反馈,那么 该消息将一直处于不可用状态。
* 如果选用自动确认,在消费者拿走消息执行过程中出现宕机时,消息可能就会丢失!!
*/
channel.basicConsume(TASK_QUEUE_NAME, false, consumer);

当手动确认时,一定要在消息处理完成后,确认提交,加上如下代码:

    // 消息处理完成,手动确认提交
// deliveryTag 该消息的index
// multiple:是否批量 true:将一次性ack所有小于deliveryTag的消息。
channel.basicAck(envelope.getDeliveryTag(), false);
     /*
* 使用fanout类型创建的交换器
* exchange:交换机名称
* type:交换机类型(direct/topic/fanout)
*/
channel.exchangeDeclare(EXCHANGE_NAME, ConfigKey.EX_FANOUT);
    /*
* 获取到一个临时队列名称。
* channel.queueDeclare():创建一个非持久化、独立、自动删除的队列名称
* 此队列是临时的,随机的,一旦我们断开消费者,队列会立即被删除
* 随机队列名,如amq.gen-jzty20brgko-hjmujj0wlg
*/
String queueName = channel.queueDeclare().getQueue();
        /*
* 将队列跟交换器进行绑定
* queue:队列名称
* exchange:交换机名称
* routingKey:队列跟交换机绑定的键值
*/
channel.queueBind(queueName, EXCHANGE_NAME, "black");

rabbitmq-channel方法介绍的更多相关文章

  1. RabbitMQ系列(三)RabbitMQ交换器Exchange介绍与实践

    RabbitMQ交换器Exchange介绍与实践 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchang ...

  2. rabbitmq的简单介绍一

    该博客的主要讲解了以下几种rabbitmq的用法1.实现简单的生产者发送消息给消费者2.实现序列持久化3.实现消息持久化4.实现消息公平分发5.实现广播6.实现组播7.实现细分组播 先来看下rabbi ...

  3. RabbitMQ交换器Exchange介绍与实践

    RabbitMQ交换器Exchange介绍与实践 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchang ...

  4. 游戏引擎中三大及时光照渲染方法介绍(以unity3d为例)

    (转)游戏引擎中三大及时光照渲染方法介绍(以unity3d为例)   重要:在目前市面上常见的游戏引擎中,主要采用以下三种灯光实现方式: 顶点照明渲染路径细节 Vertex Lit Rendering ...

  5. RabbitMQ的基础介绍

    转自:http://blog.csdn.net/whycold/article/details/41119807 一.引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构 ...

  6. [转载]C#读写txt文件的两种方法介绍

    C#读写txt文件的两种方法介绍 by 大龙哥 1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char ...

  7. fstream的使用方法介绍

    转载自:  fstream的使用方法介绍 - saga's blog - C++博客 http://www.cppblog.com/saga/archive/2007/06/19/26652.html ...

  8. Windows下获取本机IP地址方法介绍

    Windows下获取本机IP地址方法介绍 if((hostinfo = gethostbyname(name)) != NULL) { #if 1 ; printf("IP COUNT: % ...

  9. WebService服务调用方法介绍

    1 背景概述 由于在项目中需要多次调用webservice服务,本文主要总结了一下java调用WebService常见的6种方式,即:四种框架的五种调用方法以及使用AEAI ESB进行调用的方法. 2 ...

  10. C#读写txt文件的两种方法介绍

    C#读写txt文件的两种方法介绍 1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出 ...

随机推荐

  1. 初探Angular_03 组件中模板数据绑定

    这里将介绍三种情况的数据绑定 需要TypeScript的基本知识,如TS数据类型 一.模板属性绑定数据 1.模板属性其实HTML的属性,如class,style,title等 2.先在header.c ...

  2. c#字典怎么获取第一个键值 List<对象>获取重复项,转成Dictionary<key,List<对象>>

    c#字典怎么获取第一个键值 Dictionary<string, int> dictionary = new Dictionary<string, int>(); dictio ...

  3. 201621123018《Java程序设计》第4周学习报告

    1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 继承.多态.子类.父类.抽象类.abstract.super.object 1.2 尝试使用思维导图将这些关键词组织起来.注:思 ...

  4. 5.python内置函数详解

    内置函数 声明,转载至这位大哥,感谢之至 http://blog.csdn.net/oaa608868/article/details/53506188 关于分类 数学运算(7个) 类型转换(24个) ...

  5. mysql中date,datetime,timestamp数据类型区别

    (1)date表示日期,其范围为1000-01-01到9999-12-31 (2)datetime表示日期时间,其范围是1000-01-01 00:00:00到9999-12-31 23:59:59 ...

  6. 听补天漏洞审核专家实战讲解XXE漏洞

    对于将“挖洞”作为施展自身才干.展现自身价值方式的白 帽 子来说,听漏洞审核专家讲如何挖掘并验证漏洞,绝对不失为一种快速的成长方式! XXE Injection(XML External Entity ...

  7. 记自己的第一个完整的java web项目

    我是从asp.net平台转到java平台的.基于asp.net平台开发网站的快速便捷性,工作几年来大小网站多少也写了6.7个.但是转到java后,因为是在一家大公司,而且做的功能也比较单一,局限于此, ...

  8. 《JAVA与模式》之原型模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述原型(Prototype)模式的: 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办 ...

  9. linux安装git,linux安装jenkins

    首先是两个地址,分别是git的版本下载地址,jenkins的下载地址 https://mirrors.edge.kernel.org/pub/software/scm/git/ http://mirr ...

  10. django.db.utils.InternalError: (1050, "Table 'tb_content' already exists")

    在goods应用里面写了tb_content数据表的模型类(不该写在这里的),进行了数据迁移,还导入了数据. 在contents应用里也写了tb_content数据表的模型类(应该写在这里的), 解决 ...