定义:

消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。简单理解:蓝牙配对

jar包依赖:

com.rabbitmq

amqp-client

3.0.4

方式一:

(发)

importjava.io.IOException;importcom.rabbitmq.client.Channel;importcom.rabbitmq.client.Connection;importcom.rabbitmq.client.ConnectionFactory;public classSend {private final static String QUEUE_NAME = "qq";public static void main(String[] args) throwsIOException {

ConnectionFactory factory= newConnectionFactory();

factory.setHost("hostname");

factory.setUsername("username");

factory.setPassword("password");

factory.setPort(5672);

Connection connection=factory.newConnection();

Channel channel=connection.createChannel();

channel.queueDeclare(QUEUE_NAME,false, false, false, null);

String message= "Hello World!";

channel.basicPublish("", QUEUE_NAME, null, message.getBytes());

System.out.println(" [x] Sent '" + message + "'");

channel.close();

connection.close();

}

}

(收)

importcom.rabbitmq.client.ConnectionFactory;importcom.rabbitmq.client.QueueingConsumer;importcom.rabbitmq.client.Channel;importcom.rabbitmq.client.Connection;public classReqv {private final static String QUEUE_NAME = "qq";public static void main(String[] argv) throwsException {

ConnectionFactory factory= newConnectionFactory();

factory.setUsername("username");

factory.setPassword("password");

factory.setHost("hostname");

factory.setVirtualHost("/");

factory.setPort(5672);

Connection connection=factory.newConnection();

Channel channel=connection.createChannel();

channel.queueDeclare(QUEUE_NAME,false, false, false, null);

System.out.println(" [*] Waiting for messages. To exit press CTRL+C");

QueueingConsumer consumer= newQueueingConsumer(channel);

channel.basicConsume(QUEUE_NAME,true, consumer);while(true){

QueueingConsumer.Delivery delivery=consumer.nextDelivery();

String message= newString(delivery.getBody());

System.out.println(" [x] Received '" + message + "'");

}

}

}

方式二:

(发)

importcom.rabbitmq.client.Channel;importcom.rabbitmq.client.Connection;importcom.rabbitmq.client.ConnectionFactory;public classSend2 {private static final String EXCHANGE_NAME = "qq";public static void main (String [] argv) throwsjava.io.IOException {

ConnectionFactory factory= newConnectionFactory();

factory.setHost("hostname");

factory.setUsername("username");

factory.setPassword("password");

factory.setPort(5672);

Connection connection=factory.newConnection();

Channel channel=connection.createChannel();

channel.exchangeDeclare(EXCHANGE_NAME,"fanout",true);

String message="hello world";

channel.basicPublish(EXCHANGE_NAME,"",null,message.getBytes());

System.out.println("[x] Sent'" + message + "'");

channel.close();

connection.close();

}

(收)

importjava.io.IOException;importcom.alibaba.fastjson.JSONObject;importcom.rabbitmq.client.AMQP;importcom.rabbitmq.client.Channel;importcom.rabbitmq.client.Connection;importcom.rabbitmq.client.ConnectionFactory;importcom.rabbitmq.client.Consumer;importcom.rabbitmq.client.DefaultConsumer;importcom.rabbitmq.client.Envelope;public classReqv2 {private static final String EXCHANGE_NAME = "qq";public static void main (String [] argv) throwsException {

ConnectionFactory factory= newConnectionFactory();

factory.setHost("hostname");

factory.setUsername("username");

factory.setPassword("password");

factory.setPort(5672);

Connection connection=factory.newConnection();

Channel channel=connection.createChannel();

channel.exchangeDeclare(EXCHANGE_NAME,"fanout",true);

String queueName=channel.queueDeclare().getQueue();

channel.queueBind(queueName,EXCHANGE_NAME,"");

System.out.println("[*]等待消息。退出按CTRL + C");

Consumer consumer= newDefaultConsumer(channel){

@Overridepublic void handleDelivery (String consumerTag,Envelope envelope,AMQP.BasicProperties properties,byte[] body) throwsIOException {

String message= new String(body,"UTF-8");

System.out.println("[x] Received'" + message + "'");}

};

channel.basicConsume(queueName,true,consumer);

}

}

参考网址:

http://www.rabbitmq.com/tutorials/tutorial-one-java.html

java mq_java实现MQ消息收发两种方式相关推荐

  1. Java中线程的创建有两种方式

    Java中继承thread类与实现Runnable接口的区别 Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过 ...

  2. java的websocket_java 实现websocket的两种方式实例详解

    一.介绍 1.两种方式,一种使用tomcat的websocket实现,一种使用spring的websocket 2.tomcat的方式需要tomcat 7.x,JEE7的支持. 3.spring与we ...

  3. websocket java 例子_java 实现websocket的两种方式实例详解

    目录 一.介绍 1.两种方式,一种使用tomcat的websocket实现,一种使用spring的websocket 2.tomcat的方式需要tomcat 7.x,JEE7的支持. 3.spring ...

  4. RocketMq : 消费消息的两种方式 pull 和 push

    文章目录 1.概述 两种方式的优缺点对比: push pull 1.概述 原创在:https://blog.csdn.net/zhangcongyi420/article/details/905483 ...

  5. RabbitMQ(六)——Spring boot中消费消息的两种方式

    前言 上一篇博客中,我们只是简单总结了Spring boot中整合RabbitMQ的操作,针对消息消费的两种方式只是简单给了一个实例,这篇博客,我们进一步总结关于Spring boot消息消费的相关功 ...

  6. java 深克隆_Java实现深克隆的两种方式

    序列化和依次克隆各个可变的引用类型都可以实现深克隆,但是序列化的效率并不理想 下面是两种实现深克隆的实例,并且测试类对两种方法进行了对比: 1.重写clone方法使用父类中的clone()方法实现深克 ...

  7. Java Spark之创建RDD的两种方式和操作RDD

    首先看看思维导图,我的spark是1.6.1版本,jdk是1.7版本 spark是什么?  Spark是基于内存计算的大数据并行计算框架.Spark基于内存计算,提高了在大数据环境下数据处理的实时性, ...

  8. RocketMq 消费消息的两种方式 pull 和 push

    在RocketMQ中一般有两种获取消息的方式,一个是拉(pull,消费者主动去broker拉取),一个是推(push,主动推送给消费者) 区别是: push方式里,consumer把轮询过程封装了,并 ...

  9. Java中类加载器获取的两种方式

    import org.junit.Test;import java.io.FileInputStream; import java.io.IOException; import java.io.Inp ...

最新文章

  1. 面试官如何判断面试者的机器学习水平?
  2. 数据挖掘关联规则挖掘FPtree的思想
  3. 文件结束[置顶] javaweb框架--自定义标签与freemaker结合
  4. ROS系统实现 tf坐标系广播与监听
  5. Algorithm之MC:Monte Carlo method蒙特·卡罗方法的简介、实现、应用
  6. php 递归删除函数
  7. C++ Queues(队列)
  8. 1月8日学习内容整理:JS的作用域和作用域链
  9. 《编译原理》课程教学大纲
  10. [导入]C#面向对象设计模式纵横谈(10):Decorator 装饰模式(结构型模式).zip(9.84 MB)...
  11. 类和类之间的关系解析-1
  12. win8信息服务器不可用怎么办,win8系统下开机提示OneDrive选项此服务现在不可用请稍后再试怎么办...
  13. jQuery 常用效果
  14. php 用户中心 框架,OpenCenter —— PHP 通用用户中心框架【国人开发,代码托管在 Git@OSC】...
  15. ai修复照片软件是哪个软件_智能照片修复
  16. Unity Flat Shading实现低多边形(low-poly)效果
  17. Java面试之多线程:Java创建多线程为什么只有一种方式?
  18. 英伟达Tesla T4 显卡编解码能力测试
  19. python语言命名规则-一文轻松掌握python语言命名规范规则
  20. JS中NaN定义与用法

热门文章

  1. 谷歌浏览器不填充密码问题
  2. Success is not final, failure is not fatal, it is the courage to continue that counts.
  3. js获取指定class和id的值
  4. 熟悉python中的tkinter图形包--(写一个参数计算器)
  5. windows10 关闭笔记本自带键盘
  6. mysql 存储时间 时间戳_存储和读取MYSQL时间戳
  7. 教师专用计算机借还登记表,北京林业大学信息公开网
  8. 绩效考核-产品经理绩效考核指标
  9. Nginx+IIS分布式部署和负载均衡
  10. OPPO A59st解账户锁刷机包 线刷救砖教程