热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RabbitMq六种使用模式(1)_直接指定消息接收队列

本文开始学习rabbitmq内置的集中exchanges类型;基本翻译http:www.rabbitmq.comgetstarted.html第一种,也是最简单的一种方式:只有

本文开始学习rabbitmq内置的集中exchanges类型;基本翻译http://www.rabbitmq.com/getstarted.html


第一种,也是最简单的一种方式:只有一个生产者一个消费者;

rabbitmq的队列基本上是无界的,生产者不停的生产消息放入队列,消费者阻塞式的获取消息,获得后去处理(最好是启动新的线程去处理,以免任务执行比较耗时,影响消息及时的读取)

生产者:发布消息

ConnectionFactory factory = new ConnectionFactory(); 
factory.setHost("localhost");//此处可以设置多个属性,包括IP地址以及认证账号等信息 
Connection cOnnection= factory.newConnection(); //Connection代表了一个socket链接,具有协议协商和认证的功能; 
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null); 
//声明一个队列(如果不存在则创建,如果存在且属性设置一样则不变,如果属性设置不同,则报错 
//队列名称+是否需要持久化(服务重启后可恢复)+是否是排他性的(只属于本connection)+是否自动删除(不再使用时服务器自动删除)+其他属性设置 
String message = "Hello World!"; 
channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); 
// exchange名称+路由关键字(exchange名字为""时代表队列名称)+消息的其他设置信息+消息内容字节数组  
System.out.println(" [x] Sent '" + message + "'"); 
//关闭链接,如果不关闭,connection会以配置的时间间隔心跳保持链接的可用性(如果空闲时间过长,有的系统会强制关闭链接) 
channel.close(); connection.close();




 
 

消费者:取消息

如生产者一样创建链接和通道;
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection cOnnection= factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null)
QueueingConsumer cOnsumer= new QueueingConsumer(channel);
channel.basicConsume(QUEUE_NAME, true, consumer);
while (true) {
      QueueingConsumer.Delivery delivery = consumer.nextDelivery();//会阻塞,直到有消息返回
      String message = new String(delivery.getBody());
      System.out.println(" [x] Received '" + message + "'");
}


 
 


推荐阅读
  • Node.js 教程第五讲:深入解析 EventEmitter(事件监听与发射机制)
    本文将深入探讨 Node.js 中的 EventEmitter 模块,详细介绍其在事件监听与发射机制中的应用。内容涵盖事件驱动的基本概念、如何在 Node.js 中注册和触发自定义事件,以及 EventEmitter 的核心 API 和使用方法。通过本教程,读者将能够全面理解并熟练运用 EventEmitter 进行高效的事件处理。 ... [详细]
  • Prim算法在处理稠密图时表现出色,尤其适用于边数远多于顶点数的情形。传统实现的时间复杂度为 \(O(n^2)\),但通过引入优先队列进行优化,可以在点数为 \(m\)、边数为 \(n\) 的情况下显著降低时间复杂度,提高算法效率。这种优化方法不仅能够加速最小生成树的构建过程,还能在大规模数据集上保持良好的性能表现。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 计算 n 叉树中各节点子树的叶节点数量分析 ... [详细]
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • BZOJ4240 Gym 102082G:贪心算法与树状数组的综合应用
    BZOJ4240 Gym 102082G 题目 "有趣的家庭菜园" 结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在 10 秒的时间限制和 256MB 的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为 756 次,成功解决次数为 349 次,体现了该题目的挑战性和实际应用价值。 ... [详细]
  • 本项目在Java Maven框架下,利用POI库实现了Excel数据的高效导入与导出功能。通过优化数据处理流程,提升了数据操作的性能和稳定性。项目已发布至GitHub,当前最新版本为0.0.5。该项目不仅适用于小型应用,也可扩展用于大型企业级系统,提供了灵活的数据管理解决方案。GitHub地址:https://github.com/83945105/holygrail,Maven坐标:`com.github.83945105:holygrail:0.0.5`。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • Spring Batch 异常处理与任务限制优化策略 ... [详细]
  • 深入解析 UIImageView 与 UIImage 的关键细节与应用技巧
    本文深入探讨了 UIImageView 和 UIImage 的核心特性及应用技巧。首先,详细介绍了如何在 UIImageView 中实现动画效果,包括创建和配置 UIImageView 实例的具体步骤。此外,还探讨了 UIImage 的加载方式及其对性能的影响,提供了优化图像显示和内存管理的有效方法。通过实例代码和实际应用场景,帮助开发者更好地理解和掌握这两个重要类的使用技巧。 ... [详细]
  • 如何使用 net.sf.extjwnl.data.Word 类及其代码示例详解 ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • 通过优化模板消息机制,本研究提出了一种高效的信息化推送方案。该方案利用获取的访问令牌(access token)和指定的模板ID,实现了精准且快速的信息推送,显著提升了用户体验和信息传递效率。具体实现中,通过调用相关API接口,确保了消息的准确性和及时性,为用户提供更加便捷的服务。 ... [详细]
  • Java服务问题快速定位与解决策略全面指南 ... [详细]
  • 从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南
    从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南 ... [详细]
author-avatar
天宣建欣振萍
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有