1、简介

  RabbitMQ是消息代理:它接受和转发消息。你可以把它当作一个邮局:当你把你要邮寄的邮件放在信箱里时,你可以肯定Postman先生最终会把邮件送到你的收件人那里。在这个比喻中,RabbitMQ是邮局,邮局邮差。RabbitMQ和邮局之间的主要区别是,它不处理纸张,而是接受、存储和转发二进制数据‒消息。

  整体的设计如下图:

  

  java环境下,使用rabbitmq需要用到jar包:amqp-client.jar

2、发送消息

  想要将消息发送到队列中,我们需要进行下面几步:

  (1)建立服务链接

 ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost"); // 设置ip地址
factory.setPort(5672); // rabbit的端口号,默认为5672,可以不写
factory.setPassword("rabbit"); // 发送消息用户的登录密码
factory.setUsername("rabbit"); // 发送消息用户的登录用户名
Connection connection = factory.newConnection(); // 新建链接
Channel channel = connection.createChannel(); // 创建channel

  (2)声明消息队列

 channel.queueDeclare("QUEUE_NAME", false, false, false, null);

  (3)调用方法发送消息

 String message = "Hello World!";                    // 待发送的消息
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());

  (4)发送消息过后,需要关闭链接

 channel.close();
connection.close();

3、接收消息

  接下来,当生产者将消息发送到队列之后,我们消费者一方就可以从队列中接收到消息了:

  (1)建立服务器链接,和生产者一方一样

 ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost"); // 设置ip地址
factory.setPort(5672); // rabbit的端口号,默认为5672,可以不写
factory.setPassword("rabbit"); // 发送消息用户的登录密码
factory.setUsername("rabbit"); // 发送消息用户的登录用户名
Connection connection = factory.newConnection(); // 新建链接
Channel channel = connection.createChannel(); // 创建channel

  (2)声明消息队列

 channel.queueDeclare("QUEUE_NAME", false, false, false, null);

  (3)声明回调方法,接收服务器从队列中发过来的消息

 Consumer consumer = new DefaultConsumer(channel) {
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
String message = new String(body, "UTF-8");
System.out.println(" [x] Received '" + message + "'");
}
};
channel.basicConsume(QUEUE_NAME, true, consumer);

    

4、运行查看结果

  分别运行生产者方和消费者方的代码过后,通过生产者方发送消息过后,就可以在消费者方接收到发送过来的数据了。

Rabbitmq消息队列(二) Hello World! 模拟简单发送接收的更多相关文章

  1. .net core使用rabbitmq消息队列 (二)

    之前有写过.net core集成使用rabbitmq的博文,见.net core使用rabbitmq消息队列,但是里面的使用很简单,而且还有几个bug,想改下,但是后来想了想,还是算了,之前使用的是. ...

  2. RabbitMQ 消息队列 二

    一:查看MQ的用户角色 rabbitmqctl list_users 二:添加新的角色,并授予权限 rabbitmqctl add_user xiaoyao 123456 rabbitmqctl se ...

  3. 十五、.net core(.NET 6)搭建RabbitMQ消息队列生产者和消费者的简单方法

    搭建RabbitMQ简单通用的直连方法 如果还没有MQ环境,可以参考上一篇的博客,在windows系统上的rabbitmq环境搭建.如果使用docker环境,可以直接百度一下,应该就一个语句就可以搞定 ...

  4. .net core使用rabbitmq消息队列

    看博文的朋友,本文有些过时了,还有些BUG,如果想了解更多用法,看看这篇吧:.net core使用rabbitmq消息队列 (二) 首先,如果你还没有安装好rabbitmq,可以参考我的博客: Ubu ...

  5. RabbitMQ消息队列1: Detailed Introduction 详细介绍

    1. 历史 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有 ...

  6. RabbitMQ消息队列系列教程(二)Windows下安装和部署RabbitMQ

    摘要 本篇经验将和大家介绍Windows下安装和部署RabbitMQ消息队列服务器,希望对大家的工作和学习有所帮助! 目录 一.Erlang语言环境的搭建 二.RabbitMQ服务环境的搭建 三.Ra ...

  7. RabbitMQ学习系列二:.net 环境下 C#代码使用 RabbitMQ 消息队列

    一.理论: .net环境下,C#代码调用RabbitMQ消息队列,本文用easynetq开源的.net Rabbitmq api来实现. EasyNetQ 是一个易于使用的RabbitMQ的.Net客 ...

  8. (二)RabbitMQ消息队列-RabbitMQ消息队列架构与基本概念

    原文:(二)RabbitMQ消息队列-RabbitMQ消息队列架构与基本概念 没错我还是没有讲怎么安装和写一个HelloWord,不过快了,这一章我们先了解下RabbitMQ的基本概念. Rabbit ...

  9. RabbitMQ消息队列(二)-RabbitMQ消息队列架构与基本概念

    没错我还是没有讲怎么安装和写一个HelloWord,不过快了,这一章我们先了解下RabbitMQ的基本概念. RabbitMQ架构 说是架构其实更像是应用场景下的架构(自己画的有点丑,勿嫌弃) 从图中 ...

随机推荐

  1. DP重开

    颓了差不多一周后,决定重开DP 这一周,怎么说,学了学trie树,学了学二叉堆,又学了学树状数组,差不多就这样,然后和cdc一番交流后发现,学这么多有用吗?noip的范围不就是提高篇向外扩展一下,现在 ...

  2. [haoi2009]巧克力

    鉴于河南是oi弱省,所以想来这道题也没什么人会翻出来写吧,而且这还是haoi2009的一道简单题目,所以估计也没几个人会写博客的,那么看在我这么弱的份上,我觉得是应该写一篇出来的. 这道题我是按照贪心 ...

  3. 一个Sqrt函数引发的血案

    源码下载地址:http://diducoder.com/sotry-about-sqrt.html 好吧,我承认我标题党了,不过既然你来了,就认真看下去吧,保证你有收获. 我们平时经常会有一些数据运算 ...

  4. luogu P3368 【模板】树状数组 2

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数数加上x 2.求出某一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个数. ...

  5. AtCoder - 2567 RGB Sequence

    Problem Statement There are N squares arranged in a row. The squares are numbered 1, 2, …, N, from l ...

  6. duplicate symbol _gestureMinimumTranslation in:

    在真机上编译无误,在模拟器上编译报错:duplicate symbol _gestureMinimumTranslation in: /Users/Sam/Library/Developer/Xcod ...

  7. 继续推荐几款VisualStudio的插件(二)

    今天晚上闲着的时候逛了一下,发现了几款不错的VisualStudio插件,这里推荐一下: Exception Breaker 在调试的时候,为了及时发现错误,我们常常会打开"总是引发所有CL ...

  8. sql-server-on-linux-how-i-think-they-did-it : Anthony Nocentino's Blog

    http://www.sqlservercentral.com/blogs/anthony-nocentinos-blog/2016/11/21/sql-server-on-linux-how-i-t ...

  9. 调试SQLSERVER (二)使用Windbg调试SQLSERVER的环境设置 ------符号文件

    http://www.cnblogs.com/lyhabc/p/4184708.html

  10. 使用原生JS进行字符串转对象

    字符串转对象 目的 工作中如果需要原生 JS 完成字符转对象的话可以通过 JSON.parse(str), 但是这个方法是ES5中才出现, 如果需要兼容低版本就需要其它方法 使用原生 JS 解决字符串 ...