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一收一发相关推荐

  1. rabbitmq topic 收不到数据_RabbitMQ和Kafka到底怎么选?

    作者:haolujunhttp://cnblogs.com/haolujun/p/9632835.html 前言 开源社区有好多优秀的队列中间件,比如RabbitMQ和Kafka,每个队列都貌似有其特 ...

  2. RabbitMQ消息队列常见面试题总结

    1.什么是消息队列: 1.1.消息队列的优点: (1)解耦:将系统按照不同的业务功能拆分出来,消息生产者只管把消息发布到 MQ 中而不用管谁来取,消息消费者只管从 MQ 中取消息而不管是谁发布的.消息 ...

  3. OpenStack T版—Neutron组件部署详解

    目录 一.OpenStack网络 1.1.OpenStack网络概述 1.2.Linux虚拟网络 1.3.OpenStack网络基础服务 1.4.Neutron主要插件.代理与服务 1.5.小结 二. ...

  4. openstack-Neutron网络服务概述和部署

    这里写目录标题 1.openstack网络 2.linux网络虚拟化 2.2开放虚拟交换机(OVS) 3.Neutron网络结构 5.网络拓扑类型 6.Nuetron主要插件.代理与服务 6.1M2插 ...

  5. 图解:消息传输的架构模式

    从概念上讲,一条消息是一个发送方与一个或多个接收方之间的一次信息交换.自从大型机问世以来,消息交换一直是计算机编程和架构设计的重要组成部分. 多年来,消息传输的实践已经发展成多种消息传输模式.在本文中 ...

  6. G.703通道故障打环测试方法

    在铁路通信系统中,经常使用G.703的2M通道,也称为E1通道.这种通道的组成如下图:   在两个火车站的路由器之间,有一系列线缆和设备,包括V35蓝线.协议转换器.同轴电缆.DDF架.SDH光传输设 ...

  7. ROS编程: 一些Tips

    接触了快一年的ROS, 这段时间个人而言, 似乎完全没在日常的编程中对线程/IPC有所考虑. 这说明ROS是一个很易用的框架, 在编程上了屏蔽了很多系统知识, 可以更加专注于逻辑/算法等. 但是从程序 ...

  8. 07/11/20 资料整理

    ODF(Optical Distribution Frame)光纤配线架 光纤配线架(ODF)用于光纤通信系统中局端主干光缆的成端和分配,可方便地实现光纤线路的连接.分配和调度 随着网络集成程度越来越 ...

  9. PYTHON——TCPUDP:Socket实现远程执行命令

    本文介绍客户端client输入dos指令,并将dos指令发送给服务端server,服务端接收到指令,通过调用subprocess模块的Popen方法实例化一个子进程对象,子进程对象执行完指令后,将结果 ...

最新文章

  1. 【iOS】日历行程的增删改查(完整)
  2. 例题3-4 猜数字游戏的提示(Master-Mind Hints, UVa 340)
  3. eclipse中开发python
  4. Oracle数据文件的备份与恢复
  5. c语言冒泡法加逗号,Ubuntu 10.04 LTS 无法添加计算机的问题
  6. 虚拟机克隆Linux操作系统后解决MAC地址冲突
  7. Android windowSoftInputMode属性解析
  8. 关于Linux环境变量
  9. 不要再被Python洗脑了,来看看这个吧......
  10. Python Tricks(八)—— 斐波那契数列的另类实现
  11. smarty 模板不能正常加载css,js的问题
  12. Java:转换汉字为unicode形式的字符串和转换unicode形式字符串转换成汉字
  13. Linux下ftp搭建
  14. Novel 网络小说点评
  15. 《数据结构》-树(双亲表示法)
  16. html如何实现日期下拉菜单,实现一个日期下拉菜单
  17. java 中的NIO
  18. MFC中UpdateData(FALSE)与UpdateData(TRUE)的区别
  19. iOS 3DES加密无盐值加密
  20. 洛谷-P2198 杀蚂蚁

热门文章

  1. 部分视图传viewbag_MVC控制器传递多个Model到视图,使用ViewData, ViewBag, 部分视图, TempData, ViewModel, Tuple...
  2. 解构协鑫:多晶硅帝国的裂变
  3. 注意,2022JCR分区有变,364本期刊影响因子更正
  4. android img解压和大宝,【临产征兆及生产过程】之大宝
  5. 新入行的计算机教师,新教师入职自我介绍
  6. 《最详细的docker+php开发环境教程》(五) 搭建开发环境概要
  7. D16. 数组名交换内容,指针变指向
  8. 总结定时器设计方法_最流行的电视背景墙装修方法,设计师压箱底总结,省钱还时尚...
  9. 企业信用报告查询流程
  10. nvl函数oracle 举例,Oracle Nvl函数的实际应用有哪些?