Virtual host-虚拟主机

虚拟主机,用于进行逻辑隔离,是最上层的路由,类似于redis的16个db,是一种逻辑上的隔离
一个virtualhost里面可以有若干个Exchange和Queue
同一个virtualhost里面不能有相同名称的Exchange和Queue

1.simple queue模型

2.创建一个连接工具类

package com.dwz.rabbitmq.util;

import java.io.IOException;
import java.util.concurrent.TimeoutException; import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory; public class ConnectionUtils {
/**
* 获取MQ的连接
* @return
* @throws TimeoutException
* @throws IOException
*/
public static Connection getConnection() throws IOException, TimeoutException {
//定义一个连接工厂
ConnectionFactory factory = new ConnectionFactory();
//设置服务地址
factory.setHost("127.0.0.1");
//设置AMQP端口号
factory.setPort(5672);
//vhost
factory.setVirtualHost("/vhost_dwz");
factory.setUsername("root_dwz");
factory.setPassword("123456");
//设置网络断开时的自动重连
factory.setAutomaticRecoveryEnabled(true);
//每3秒重连一次
factory.setNetworkRecoveryInterval(3000);
return factory.newConnection();
}
}

3.创建生产者

package com.dwz.rabbitmq.simple;

import java.io.IOException;
import java.util.concurrent.TimeoutException; import com.dwz.rabbitmq.util.ConnectionUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection; public class Send {
private static final String QUEUE_NAME = "test_simple_queue";
public static void main(String[] args) throws IOException, TimeoutException {
//获取一个连接
Connection connection = ConnectionUtils.getConnection();
//从连接中获取一个通道
Channel channel = connection.createChannel();
//创建队列声明
channel.queueDeclare(QUEUE_NAME, false, false, false, null); String msg = "hello rabbitmq simple message!";
//发布消息
channel.basicPublish("", QUEUE_NAME, null, msg.getBytes()); System.out.println("send msg--:" + msg);
//关闭信道
channel.close();
     //关闭连接
connection.close();
}
}

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

即:

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

4.创建消费者

package com.dwz.rabbitmq.simple;

import java.io.IOException;
import java.util.concurrent.TimeoutException; import com.dwz.rabbitmq.util.ConnectionUtils;
import com.rabbitmq.client.AMQP.BasicProperties;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope; public class Receive {
private static final String QUEUE_NAME = "test_simple_queue";
public static void main(String[] args) throws IOException, TimeoutException {
//获取一个连接
Connection connection = ConnectionUtils.getConnection();
//从连接中获取一个通道
Channel channel = connection.createChannel();
//队列声明
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
//定义消费者
DefaultConsumer consumer = new DefaultConsumer(channel) {
//自动接收消息
@Override
public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body)
throws IOException {
String msg = new String(body, "utf-8");
System.out.println("consumer receive--:" + msg);
}
};
//监听队列
channel.basicConsume(QUEUE_NAME, consumer);
}
}

5.运行代码

success!

最新文章

  1. DOS下windows系统查看wifi密码
  2. 一段SQL
  3. js写个日历
  4. Android 导入jar包 so模块--导入放置的目录
  5. Maven内置隐式变量(转)
  6. linux系统查看磁盘分区使用空间
  7. java指令集
  8. TCP/IP笔记 应用层(3)——HTTP
  9. C:\WINDOWS\system32\drivers\etc\hosts host文件夹里面的内容是什么?
  10. LInux系统及其文件系统
  11. LeetCode OJ 120. Triangle
  12. 007---Hibernate基本映射标签和属性介绍
  13. C# 程序集安装与卸载
  14. SQL基础学习_04_视图
  15. EBS值集,弹性域常用表
  16. 面试经验合集-Web前端<一>
  17. Java开发笔记(五十)几种开放性修饰符
  18. mysql Client does not support authentication protocol requested by server; consider upgrading MySQL
  19. 微信内置浏览器浏览H5页面弹出的键盘遮盖文本框的解决办法(转)
  20. HDU 2907

热门文章

  1. element-ui table float类型数据排序失败
  2. O052、Create Volume 操作 (Part III)
  3. linux系统编程相关
  4. 防止表单提交时刷新页面-阻止form表单的默认提交行为
  5. vue2.0关于for循环 index的使用方法
  6. OO方式实现ALV: cl_salv_table
  7. 读micro8的一些记录与思考
  8. springboot搭建web项目与使用配置文件
  9. 8.6.zookeeper应用案例_分布式共享锁的简单实现
  10. altium designer 鼠线