AMQP的架构模型


其中虚拟主机的意思类似于数据库中库的概念,设计者更希望,每一个项目独立使用一个虚拟主机。

入门案例

引入依赖

<dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.7.2</version>
</dependency>

先去创建虚拟主机

编写生产者代码并运行

     // 直连模式生产者 ( 生产者直接链接队列,没有交换器参与 )@Testvoid contextLoads() throws IOException, TimeoutException {ConnectionFactory connectionFactory = new ConnectionFactory();connectionFactory.setHost("106.15.73.43");connectionFactory.setVirtualHost("/rabbitmq_zhj");connectionFactory.setPort( 5672 );connectionFactory.setUsername( "admin" );connectionFactory.setPassword( "123" );// 创建连接Connection connection = connectionFactory.newConnection();// 创建信道Channel channel = connection.createChannel();// 参数1:队列名  参数2: 队列是否持久化  参数3:是否独占队列 参数4:是否在消费后自动删除 参数5:其他属性channel.queueDeclare("hello",true,false,false,null );//发布消息 参数1: 交换机名 参数2:队列名 参数3:MessageProperties.PERSISTENT_TEXT_PLAIN(持久化)传递消息的额外设置 参数4:消息的内容(字节)channel.basicPublish("","hello", MessageProperties.PERSISTENT_TEXT_PLAIN, "hello rabbitmq".getBytes() );// 关闭信道channel.close();// 关闭连接connection.close();}

编写消费者代码并运行

主要注意的是消费者端需要一直处于监听运行状态。建议放在main函数中进行运行。

    // 直连模式消费者 ( 生产者直接链接队列,没有交换器参与 )public static void main(String[] args) throws IOException, TimeoutException {ConnectionFactory connectionFactory = new ConnectionFactory();connectionFactory.setHost("106.15.73.43");connectionFactory.setPort( 5672 );connectionFactory.setUsername("admin");connectionFactory.setPassword("123");connectionFactory.setVirtualHost("/rabbitmq_zhj");Connection connection = connectionFactory.newConnection();// 创建信道Channel channel = connection.createChannel();// 参数1:队列名  参数2: 是否持久化  参数3:是否独占队列 参数4:是否在消费后自动删除 参数5:其他属性channel.queueDeclare("hello",true,false,false,null );// 参数1: 队列名 参数2:队列名 参数3:传递消息的额外设置 参数4:消息的内容(字节)channel.basicConsume("hello" ,true , new DefaultConsumer(channel){@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {System.out.println(new String(body));}} );}

工具类提取

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;public class RabbitMQUtil {private static ConnectionFactory connectionFactory;static {connectionFactory = new ConnectionFactory();connectionFactory.setPort( 5672 );connectionFactory.setHost( "106.15.73.43" );connectionFactory.setPassword( "123" );connectionFactory.setUsername( "admin" );connectionFactory.setVirtualHost( "/rabbitmq_zhj" );}public static Connection getConnection() throws IOException, TimeoutException {try{return connectionFactory.newConnection();}catch (Exception e){e.printStackTrace();return null;}}public static void closeConnectionAndChanel(Channel channel, Connection connection){try{if (channel != null) channel.close();if (connection != null) connection.close();} catch (IOException | TimeoutException e) {e.printStackTrace();}}}

RabbitMQ-直连模型相关推荐

  1. RabbitMQ的架构模型

    本章主要讨论RabbitMQ的架构模型,AMQP协议是什么,以及RabbitMQ和AMQP之间的关系,还会讨论消息从生产者发出和送达到消费者这一过程要经历哪些步骤. RabbitMQ整体上是生产者与消 ...

  2. RabbitMQ的消息模型

    1.消息队列(MQ,Message Queue) 消息队列里可以存放大量消息,这些消息由生产者生成放到队列里,等待消费者获取并处理.使用消息队列可以提升系统的性能,降低系统耦合性. 比如说,一个发短信 ...

  3. RabbitMQ:订阅模型-消息订阅模式

    订阅模型-消息订阅模式,也可以称为广播模式,生产者将消息发送到 Exchange,Exchange 再转发到与之绑定的 Queue中,每个消费者再到自己的 Queue 中取消息. RabbitMQ 单 ...

  4. RabbitMQ第一种消息模型--直连模型

    RabbitMQ简单模式–直连,相当于点对点连接一样 在上图的模型中,有以下概念: P:生产者,也就是要发送消息的程序 C:消费者:消息的接受者,会一直等待消息到来. queue:消息队列,图中红色部 ...

  5. java实现rabbitmq发布/订阅模型(Publish/Subscribe queues), 生产者 消费者 交换机 消息队列

    发布/订阅模型又称扇出模型,或者是广播模型,可以有多个消费者,每个消费者有自己的队列,每个队列都要绑定到交换机,生产者发送的消息只需要发送到交换机,再由交换机决定要发送到哪些队列,生产者无法自行决定. ...

  6. RabbitMQ 基本消息模型和消息确认机制

    ​01 前言 关于 RabbitMQ 服务器的安装,本章节不做介绍,请培养个人动手能力,自行百度解决.RabbitMQ 成功安装后(win 版),浏览器输入:localhost:15672,则可以进入 ...

  7. RabbitMQ:消息模型

    RabbitMQ 提供了 6 种消息模型,分别为:单生产单消费模型(Hello World).消息分发模型(Work queues).Fanout 消息订阅模式(Publish/Subscribe). ...

  8. 【分布式】Rabbitmq死信队列模型、实战场景---订单延迟30min支付处理

    分布式 内容管理 死信队列 死信队列demo 死信队列消息模型 平台订单支付超时 --- 演示 业务分析 代码实现 RabbitMQ 死信队列/ 延迟队列 - 延迟业务逻辑 最近可能分布式进入Redi ...

  9. java实现rabbitmq简单队列模型,生产者 消费者 消息队列

    生产者向队列发送消息,随机消费者从队列中接收消息 创建用户和虚拟主机 通过rabbitmq提供的用户管理界面可以很轻松的创建用户和虚拟主机,并且需要将用户绑定到对应的虚拟主机.自带有guest用户和/ ...

  10. RabbitMQ第二种模型--workqueue

    Work queues,也被称为(Task queues),任务模型.奉行的是平均主义 让多个消费者绑定到一个队列,共同消费队列中的消息. 队列中的消息一旦消费,就会消失,因此任务是不会被重复执行的. ...

最新文章

  1. php mysql cpu100_MySQL服务器进程CPU占用100%的解决方法
  2. R12客户表结构分析
  3. Android开发之自定义view绘制坐标位置出错的问题解决
  4. Beyond Compare配置
  5. unity collider rigidbody zz
  6. HDU 1240 Asteroids!(DFS简单搜索)
  7. 如何辨别真假柯达胶卷
  8. 深层次理解“万事万物皆为对象“ [Java]
  9. 高中数学知识那些和计算机有关系,2016高中数学知识点.doc
  10. iPhone X/XS/XR/XS Max 的屏幕适配
  11. android手机内存什么东西,清理手机必须要知道,这些文件夹里都装了些什么?...
  12. 解决服务器上传的tar格式的中不可以解压tar格式的压缩包 zip解压中文会在文件中显示乱码
  13. 汇正财经推荐股票靠谱吗?说说自己的经历
  14. [译] 2019 前端性能优化年度总结 — 第五部分
  15. 用CentOS 7安装cadence搭建适合IC Design的科研环境(四)——IC617、MMSIM151、calibre2015安装过程step by step
  16. 分布式事务(Seata) 四大模式详解
  17. 网络规划设计师怎么样
  18. 亚马逊为期十年的中国Kindle电子书店敲响丧钟,王者已不复存在
  19. Linux指南| 第2部分
  20. P3152 正整数序列

热门文章

  1. 工作中的工作心得随时分享(2)
  2. python输出a以内能被b整除的数_求一个数是否可以被输入数整除
  3. iOS:仿写探探App动画
  4. Visual Studio 2022 C++连接MySql数据库(win7和win10亲测有效)
  5. 论文解读:《Learning Linear Transformations for Fast Image and Video Style Transfer》,CVPR 2019
  6. echarts折线图实线与虚线拼接及提示框浮层内容格式的设置
  7. UITableView的分割线设为虚线
  8. Unity3D实现摄像头全局游戏平滑移动
  9. Claude回答ARINC653标准在中国大陆的应用情况
  10. 2018年计算机基础应用教程,[2018年最新整理]Word的使用-计算机基础教程.ppt