rabbitMq一收一发
1.生产者(producer)
Producing
发送消息的程序就叫做生产者。
2.队列
消息通过你的应用程序和RabbitMQ进行传输,它们能够只存储在一个队列(queue)中。队列(queue)没有任何限制,你要存储多少消息都可以——基本上是一个无限的缓冲。多个生产者(producers)能够把消息发送给同一个队列,同样,多个消费者(consumers)也能够从一个队列(queue)中获取数据。队列可以用下图标识:
Queue
3.一个消费者(consumer)就是一个等待获取消息的程序。我们把它画作”C”
Consuming
下面实现一个一发一收的demo:
在此之前首先记录一下默认的端口和相关的作用:
4369 (epmd), 25672 (Erlang distribution)
5672, 5671 (AMQP 0-9-1 without and with TLS)
15672 (if management plugin is enabled)
61613, 61614 (if STOMP is enabled)
1883, 8883 (if MQTT is enabled)
接收队列会不断阻塞在那边监听发送端的消息,发送端如果发送了数据,立马会关闭连接。
这里我们需要使用到5672端口,同时接收端和服务端的队列
名字要一致,具体代码如下:
接收端:
public class Receive {//消息队列名称private final static String QUEUE_NAME = "test1";public static void main(String[] args) throws Exception {//打开连接和创建频道,与发送端一样ConnectionFactory factory = new ConnectionFactory();factory.setHost("127.0.0.1");//指定用户 密码factory.setUsername("lsj");factory.setPassword("123456");//指定端口factory.setPort(AMQP.PROTOCOL.PORT);//创建一个连接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){//nextDelivery是一个阻塞方法(内部实现其实是阻塞队列的take方法)QueueingConsumer.Delivery delivery = consumer.nextDelivery();String message = new String(delivery.getBody());System.out.println("Received Message:'" + message + "'");}}
}
发送端:
public class Send {//消息队列名称private final static String QUEUE_NAME = "test1";public static void main(String[] args) throws Exception {/*** 创建连接连接到MabbitMQ*/ConnectionFactory factory = new ConnectionFactory();//设置MabbitMQ所在主机ip或者主机名factory.setHost("127.0.0.1");//指定用户密码factory.setUsername("lsj");factory.setPassword("123456");//指定端口factory.setPort(AMQP.PROTOCOL.PORT);//创建一个连接Connection connection = factory.newConnection();//创建一个频道Channel channel = connection.createChannel();//指定一个队列channel.queueDeclare(QUEUE_NAME, false, false, false, null);//发送的消息String message = "天王盖地虎~~";//往队列中发出一条消息channel.basicPublish("", QUEUE_NAME, null, message.getBytes());System.out.println("Sent Message:'" + message + "'");//关闭频道和连接channel.close();connection.close();}
}
rabbitMq一收一发相关推荐
- rabbitmq topic 收不到数据_RabbitMQ和Kafka到底怎么选?
作者:haolujunhttp://cnblogs.com/haolujun/p/9632835.html 前言 开源社区有好多优秀的队列中间件,比如RabbitMQ和Kafka,每个队列都貌似有其特 ...
- RabbitMQ消息队列常见面试题总结
1.什么是消息队列: 1.1.消息队列的优点: (1)解耦:将系统按照不同的业务功能拆分出来,消息生产者只管把消息发布到 MQ 中而不用管谁来取,消息消费者只管从 MQ 中取消息而不管是谁发布的.消息 ...
- OpenStack T版—Neutron组件部署详解
目录 一.OpenStack网络 1.1.OpenStack网络概述 1.2.Linux虚拟网络 1.3.OpenStack网络基础服务 1.4.Neutron主要插件.代理与服务 1.5.小结 二. ...
- openstack-Neutron网络服务概述和部署
这里写目录标题 1.openstack网络 2.linux网络虚拟化 2.2开放虚拟交换机(OVS) 3.Neutron网络结构 5.网络拓扑类型 6.Nuetron主要插件.代理与服务 6.1M2插 ...
- 图解:消息传输的架构模式
从概念上讲,一条消息是一个发送方与一个或多个接收方之间的一次信息交换.自从大型机问世以来,消息交换一直是计算机编程和架构设计的重要组成部分. 多年来,消息传输的实践已经发展成多种消息传输模式.在本文中 ...
- G.703通道故障打环测试方法
在铁路通信系统中,经常使用G.703的2M通道,也称为E1通道.这种通道的组成如下图: 在两个火车站的路由器之间,有一系列线缆和设备,包括V35蓝线.协议转换器.同轴电缆.DDF架.SDH光传输设 ...
- ROS编程: 一些Tips
接触了快一年的ROS, 这段时间个人而言, 似乎完全没在日常的编程中对线程/IPC有所考虑. 这说明ROS是一个很易用的框架, 在编程上了屏蔽了很多系统知识, 可以更加专注于逻辑/算法等. 但是从程序 ...
- 07/11/20 资料整理
ODF(Optical Distribution Frame)光纤配线架 光纤配线架(ODF)用于光纤通信系统中局端主干光缆的成端和分配,可方便地实现光纤线路的连接.分配和调度 随着网络集成程度越来越 ...
- PYTHON——TCPUDP:Socket实现远程执行命令
本文介绍客户端client输入dos指令,并将dos指令发送给服务端server,服务端接收到指令,通过调用subprocess模块的Popen方法实例化一个子进程对象,子进程对象执行完指令后,将结果 ...
最新文章
- 【iOS】日历行程的增删改查(完整)
- 例题3-4 猜数字游戏的提示(Master-Mind Hints, UVa 340)
- eclipse中开发python
- Oracle数据文件的备份与恢复
- c语言冒泡法加逗号,Ubuntu 10.04 LTS 无法添加计算机的问题
- 虚拟机克隆Linux操作系统后解决MAC地址冲突
- Android windowSoftInputMode属性解析
- 关于Linux环境变量
- 不要再被Python洗脑了,来看看这个吧......
- Python Tricks(八)—— 斐波那契数列的另类实现
- smarty 模板不能正常加载css,js的问题
- Java:转换汉字为unicode形式的字符串和转换unicode形式字符串转换成汉字
- Linux下ftp搭建
- Novel 网络小说点评
- 《数据结构》-树(双亲表示法)
- html如何实现日期下拉菜单,实现一个日期下拉菜单
- java 中的NIO
- MFC中UpdateData(FALSE)与UpdateData(TRUE)的区别
- iOS 3DES加密无盐值加密
- 洛谷-P2198 杀蚂蚁
热门文章
- 部分视图传viewbag_MVC控制器传递多个Model到视图,使用ViewData, ViewBag, 部分视图, TempData, ViewModel, Tuple...
- 解构协鑫:多晶硅帝国的裂变
- 注意,2022JCR分区有变,364本期刊影响因子更正
- android img解压和大宝,【临产征兆及生产过程】之大宝
- 新入行的计算机教师,新教师入职自我介绍
- 《最详细的docker+php开发环境教程》(五) 搭建开发环境概要
- D16. 数组名交换内容,指针变指向
- 总结定时器设计方法_最流行的电视背景墙装修方法,设计师压箱底总结,省钱还时尚...
- 企业信用报告查询流程
- nvl函数oracle 举例,Oracle Nvl函数的实际应用有哪些?