Rabbitmq消息队列(二) Hello World! 模拟简单发送接收
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! 模拟简单发送接收的更多相关文章
- .net core使用rabbitmq消息队列 (二)
之前有写过.net core集成使用rabbitmq的博文,见.net core使用rabbitmq消息队列,但是里面的使用很简单,而且还有几个bug,想改下,但是后来想了想,还是算了,之前使用的是. ...
- RabbitMQ 消息队列 二
一:查看MQ的用户角色 rabbitmqctl list_users 二:添加新的角色,并授予权限 rabbitmqctl add_user xiaoyao 123456 rabbitmqctl se ...
- 十五、.net core(.NET 6)搭建RabbitMQ消息队列生产者和消费者的简单方法
搭建RabbitMQ简单通用的直连方法 如果还没有MQ环境,可以参考上一篇的博客,在windows系统上的rabbitmq环境搭建.如果使用docker环境,可以直接百度一下,应该就一个语句就可以搞定 ...
- .net core使用rabbitmq消息队列
看博文的朋友,本文有些过时了,还有些BUG,如果想了解更多用法,看看这篇吧:.net core使用rabbitmq消息队列 (二) 首先,如果你还没有安装好rabbitmq,可以参考我的博客: Ubu ...
- RabbitMQ消息队列1: Detailed Introduction 详细介绍
1. 历史 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有 ...
- RabbitMQ消息队列系列教程(二)Windows下安装和部署RabbitMQ
摘要 本篇经验将和大家介绍Windows下安装和部署RabbitMQ消息队列服务器,希望对大家的工作和学习有所帮助! 目录 一.Erlang语言环境的搭建 二.RabbitMQ服务环境的搭建 三.Ra ...
- RabbitMQ学习系列二:.net 环境下 C#代码使用 RabbitMQ 消息队列
一.理论: .net环境下,C#代码调用RabbitMQ消息队列,本文用easynetq开源的.net Rabbitmq api来实现. EasyNetQ 是一个易于使用的RabbitMQ的.Net客 ...
- (二)RabbitMQ消息队列-RabbitMQ消息队列架构与基本概念
原文:(二)RabbitMQ消息队列-RabbitMQ消息队列架构与基本概念 没错我还是没有讲怎么安装和写一个HelloWord,不过快了,这一章我们先了解下RabbitMQ的基本概念. Rabbit ...
- RabbitMQ消息队列(二)-RabbitMQ消息队列架构与基本概念
没错我还是没有讲怎么安装和写一个HelloWord,不过快了,这一章我们先了解下RabbitMQ的基本概念. RabbitMQ架构 说是架构其实更像是应用场景下的架构(自己画的有点丑,勿嫌弃) 从图中 ...
随机推荐
- ASP.NET Core 2.2 基础知识(五) 环境
一.环境变量 系统启动时,会读取环境变量 ASPNETCORE_ENVIRONMENT ,并将该变量的值存储在 IHostingEnvironment.EnvironmentName 字段中.如: 新 ...
- 【kruscal】【最小生成树】poj3522 Slim Span
求一个生成树,使得最大边权和最小边权之差最小.由于数据太小,暴力枚举下界,求出相应的上界.最后取min即可. #include<cstdio> #include<algorithm& ...
- Exercise03_03
import java.util.Scanner; public class LinearEquation { public static void main(String[] args){ doub ...
- 【R笔记】glm函数报错原因及解析
R语言glm函数学习: [转载时请注明来源]:http://www.cnblogs.com/runner-ljt/ Ljt 作为一个初学者,水平有限,欢迎交流指正. glm函数介绍: glm(for ...
- Java堆内存不足
1)使用IDEA开发程序时有时候会提示“Java Heap space error”,说明IDEA默认配置的Java堆内存不足,程序需要更多的堆内存. 2)堆(Heap)和非堆(Non-heap)内存 ...
- 继续推荐几款VisualStudio的插件(二)
今天晚上闲着的时候逛了一下,发现了几款不错的VisualStudio插件,这里推荐一下: Exception Breaker 在调试的时候,为了及时发现错误,我们常常会打开"总是引发所有CL ...
- 64个命令,每天一个linux命令目录, shutdown,tee,rcp,
每天一个linux命令目录 开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令.学习的主要参考资料为: 1.<鸟哥的linux私房菜> 2.htt ...
- Centos:mysql的安装和使用:yum方式
1.安装: 安装客户端 sudo yum install mysql 安装服务器 sudo yum install mysql-server 2.配置:查看配置文件 cat /etc/my.cnf 3 ...
- GDUT决赛题解
决赛,我自我认为题目难度更大,反而我的心态更好了. 由于放轻松的时候反而效果更好,跟昨天的观点一样,凡是可以1A的,才算这题做得好. A.数目不大,关键是看懂题(我自己连输入输出是什么都不清楚.... ...
- 深度增强学习--Deep Q Network
从这里开始换个游戏演示,cartpole游戏 Deep Q Network 实例代码 import sys import gym import pylab import random import n ...