Virtual host-虚拟主机

  1. 虚拟主机,用于进行逻辑隔离,是最上层的路由,类似于redis16db,是一种逻辑上的隔离
  2. 一个virtualhost里面可以有若干个ExchangeQueue
  3. 同一个virtualhost里面不能有相同名称的ExchangeQueue

1.simple queue模型

2.创建一个连接工具类

  1. package com.dwz.rabbitmq.util;
  2.  
  3. import java.io.IOException;
  4. import java.util.concurrent.TimeoutException;
  5.  
  6. import com.rabbitmq.client.Connection;
  7. import com.rabbitmq.client.ConnectionFactory;
  8.  
  9. public class ConnectionUtils {
  10. /**
  11. * 获取MQ的连接
  12. * @return
  13. * @throws TimeoutException
  14. * @throws IOException
  15. */
  16. public static Connection getConnection() throws IOException, TimeoutException {
  17. //定义一个连接工厂
  18. ConnectionFactory factory = new ConnectionFactory();
  19. //设置服务地址
  20. factory.setHost("127.0.0.1");
  21. //设置AMQP端口号
  22. factory.setPort(5672);
  23. //vhost
  24. factory.setVirtualHost("/vhost_dwz");
  25. factory.setUsername("root_dwz");
  26. factory.setPassword("123456");
  27. //设置网络断开时的自动重连
  28. factory.setAutomaticRecoveryEnabled(true);
  29. //每3秒重连一次
  30. factory.setNetworkRecoveryInterval(3000);
  31. return factory.newConnection();
  32. }
  33. }

3.创建生产者

  1. package com.dwz.rabbitmq.simple;
  2.  
  3. import java.io.IOException;
  4. import java.util.concurrent.TimeoutException;
  5.  
  6. import com.dwz.rabbitmq.util.ConnectionUtils;
  7. import com.rabbitmq.client.Channel;
  8. import com.rabbitmq.client.Connection;
  9.  
  10. public class Send {
  11. private static final String QUEUE_NAME = "test_simple_queue";
  12. public static void main(String[] args) throws IOException, TimeoutException {
  13. //获取一个连接
  14. Connection connection = ConnectionUtils.getConnection();
  15. //从连接中获取一个通道
  16. Channel channel = connection.createChannel();
  17. //创建队列声明
  18. channel.queueDeclare(QUEUE_NAME, false, false, false, null);
  19.  
  20. String msg = "hello rabbitmq simple message!";
  21. //发布消息
  22. channel.basicPublish("", QUEUE_NAME, null, msg.getBytes());
  23.  
  24. System.out.println("send msg--:" + msg);
  25. //关闭信道
  26. channel.close();
         //关闭连接
  27. connection.close();
  28. }
  29. }

注:此时未指定exchange,所以该队列绑定的是rabbitmq提供的默认的exchange

即:

此时的exchange类型是direct(直连)方式

4.创建消费者

  1. package com.dwz.rabbitmq.simple;
  2.  
  3. import java.io.IOException;
  4. import java.util.concurrent.TimeoutException;
  5.  
  6. import com.dwz.rabbitmq.util.ConnectionUtils;
  7. import com.rabbitmq.client.AMQP.BasicProperties;
  8. import com.rabbitmq.client.Channel;
  9. import com.rabbitmq.client.Connection;
  10. import com.rabbitmq.client.DefaultConsumer;
  11. import com.rabbitmq.client.Envelope;
  12.  
  13. public class Receive {
  14. private static final String QUEUE_NAME = "test_simple_queue";
  15. public static void main(String[] args) throws IOException, TimeoutException {
  16. //获取一个连接
  17. Connection connection = ConnectionUtils.getConnection();
  18. //从连接中获取一个通道
  19. Channel channel = connection.createChannel();
  20. //队列声明
  21. channel.queueDeclare(QUEUE_NAME, false, false, false, null);
  22. //定义消费者
  23. DefaultConsumer consumer = new DefaultConsumer(channel) {
  24. //自动接收消息
  25. @Override
  26. public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body)
  27. throws IOException {
  28. String msg = new String(body, "utf-8");
  29. System.out.println("consumer receive--:" + msg);
  30. }
  31. };
  32. //监听队列
  33. channel.basicConsume(QUEUE_NAME, consumer);
  34. }
  35. }

5.运行代码

success!

simple queue(简单队列)的更多相关文章

  1. HTTPSQS(HTTP Simple Queue Service)消息队列

    HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key ...

  2. Amazon SQS(Simple Queue Service) 简单介绍

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/hongchangfirst/article/details/25877059 SQS即Simple ...

  3. 使用Amazon Simple Queue Service(SQS) 实现简单的消息服务

    一  引言 亚马逊Amazon作为云计算的领跑者推出了很多云服务,最近因为项目的原因,需要用到SQS服务,因此简要地写下这篇随笔,一来方便以后查阅,二来方便共享一些简单的操作. SQS即可以理解为一个 ...

  4. 转:基于HTTP协议的轻量级开源简单队列服务:HTTPSQS

    [文章作者:张宴 本文版本:v1.7.1 最后修改:2011.11.04 转载请注明原文链接:http://blog.zyan.cc/httpsqs/] HTTPSQS(HTTP Simple Que ...

  5. 基于HTTP协议的轻量级开源简单队列服务:HTTPSQS[转]

    HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key ...

  6. python-Day3-set 集合-counter计数器-默认字典(defaultdict) -可命名元组(namedtuple)-有序字典(orderedDict)-双向队列(deque)--Queue单项队列--深浅拷贝---函数参数

    上节内容回顾:C语言为什么比起他语言块,因为C 会把代码变异成机器码Pyhton 的 .pyc文件是什么python 把.py文件编译成的.pyc文件是Python的字节码, 字符串本质是 字符数组, ...

  7. STL - queue(队列)

    Queue简介 queue是队列容器,是一种"先进先出"的容器. queue是简单地装饰deque容器而成为另外的一种容器. #include <queue> queu ...

  8. python---RabbitMQ(1)简单队列使用,消息依次分发(一对一),消息持久化处理

    MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消息传递指的是程序之间 ...

  9. RabbitMq 之简单队列

    简单队列类似于我们的生产者,消费者, 一个生产者,对应一个消费者. 直接上代码: package com.j1.rabbitmq.simple; import com.j1.rabbitmq.util ...

随机推荐

  1. 使用filebeat给多个logstash传输数据

    1. filebeat.yml filebeat.inputs: - type: log enabled: true paths: - /var/log/messages - /var/log/dme ...

  2. 怎样在 Vue 里面使用自定义事件将子组件的数据传回给父组件?

    首先, Vue 里面的组件之间的数据流动是 单向 的, 数据可以从父组件传递给子组件, 但不能从子组件传递给父组件, 因为组件和组件之间是 隔离 的. 就像两个嵌套的 黑盒子 . 能通过 props ...

  3. lua与c的交互(函数专用)

    Lua与C的交互 Lua是一个嵌入式的语言,它不仅可以是一个独立运行的程序,也可以是一个用来嵌入其它应用的程序库. C API是一个C代码与Lua进行交互的函数集,它由以下几部分构成: 1.  读写L ...

  4. 【原创】大叔经验分享(60)hive和spark读取kudu表

    从impala中创建kudu表之后,如果想从hive或spark sql直接读取,会报错: Caused by: java.lang.ClassNotFoundException: com.cloud ...

  5. opencv 一些函数的耗时计算

    Release 模式 -------------------------------------------------- smooth gaussian : 2 cvtColor CV_BGR2La ...

  6. CentOS 7.6 64位安装docker并设置开机启动

    步骤如下 安装docker.docker-compose yum -y install docker-io docker-compose 启动docker service docker start 设 ...

  7. Java注解【一、概述】

    前面几篇Java学习笔记都是半夜写的,比较伤身体,今天开始想调整生物钟,早上起来学2小时,看看能坚持多久 本周目标: 1.JavaJDBC使用 2.JavaWeb编程 3.Java框架基础(反射+注解 ...

  8. 【2017-04-20】Ado.Net与面向对象结合架构中的数据访问层(实体类,数据访问类)

    开发项目三层架构:界面层.业务逻辑层.数据访问层 今天学习一下数据访问层,分为实体类和数据访问类 所有的类放在App_Code这个文件夹下边.养成一个好的习惯. 一.实体类 数据库中的表映射为一个类, ...

  9. fragment事务 的基本处理

    处理fragment事务 动态加载fragmentMyFragment2 fragment2=new MyFragment2();//new出一个fragment对象FragmentManager f ...

  10. Selenium(2)

    testing123456peter123456rose123456 一.常见的运行错误: 1.[error] Timed out after 30000ms Timed out:超时 after:之 ...