2-1 RabbitMQ 生产者消息发送

创建 Maven 项目 Send

加入依赖

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

send代码贴图:

SendTest.java

import com.rabbitmq.client.AMQP;
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 SendTest {
public static void main(String[] args) throws IOException, TimeoutException {
//创建链接工厂对象
ConnectionFactory factory=new ConnectionFactory();
factory.setHost("192.168.171.143");//设置RabbitMQ的主机IP
factory.setPort(5672);//设置RabbitMQ的端口号
factory.setUsername("root");//设置访问用户名
factory.setPassword("root");//设置访问密码
Connection connection=null;//定义链接对象
Channel channel=null;//定义通道对象
connection=factory.newConnection();//实例化链接对象
channel=connection.createChannel();//实例化通道对象
String message ="Hello World!3";
//发送消息到RabbitMQ
//参数1 我们自定义的交换机名称
//参数2 自定义的RoutingKey值
//参数3 设置消息的属性,可以通过消息属性设置消息是否是持久化的
//参数4 具体要发送的消息信息
//定义消息属性对象 设置deliveryMode(1) 表示消息不需要持久化 deliveryMode(2)需要持久化
//在性能持久化消息要低于非持久化消息,在安全上持久化消息在服务器宕机之后还可以保留因此安全性相对要高一些
AMQP.BasicProperties properties=new AMQP.BasicProperties.Builder().deliveryMode(2).build();
channel.basicPublish("myExchange","myRoutingKey",properties,message.getBytes("UTF-8"));
System.out.println("消息发送成功: "+message);
channel.close();
connection.close();
}
}

2-2 RabbitMQ 消费者接收消息
创建 Maven 项目 Receive
ReceiveTest.ja

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException; public class ReceiveTest {
public static void main(String[] args) throws IOException, TimeoutException {
// 创建链接工厂对象
ConnectionFactory factory=new ConnectionFactory();
factory.setHost("192.168.171.143");
factory.setPort(5672);
factory.setUsername("root");
factory.setPassword("root");
Connection connection=null;
Channel channel=null;
connection=factory.newConnection();
channel=connection.createChannel();
//创建消费者对象
Consumer consumer=new DefaultConsumer(channel){
@Override
public void handleDelivery(String consumerTag, Envelope envelope,
AMQP.BasicProperties properties, byte[] body) throws IOException {
String message=new String(body,"UTF-8");
System.out.println("接收到的消息:"+message);
}
};
//将消费者对象设置到指定通道中,并监听某个队列,如果队列有新的消息则直接调用consumer对象中的handleDelivery方法获取消息
//参数1 消息队列的名称
//参数2 接收消息以后是否将消息从队列中移除 建议使用true 当消息处理完成后会自动的清空被处理过的消息,
// 可以实现解决消息被重复消费的问题
//参数3 设定由哪个消费监听消息
channel.basicConsume("myQueue",true,consumer);
}
}

2-3 消息持久化

2-4 消息确认
ReceiveTest.java

最新文章

  1. JavaScript面向对象和原型函数
  2. Replace Temp with Query
  3. oracle rman恢复数据库 方式恢复到异地数据库
  4. Hbase随笔
  5. Linux Basic --- The First Character in The File Properity
  6. 函数改变全局变量-JS
  7. java 面向对象编程 第20章 XML技术解析
  8. BackGroundWorker使用总结
  9. php 10.2总
  10. ES6-01:常量与变量的声明
  11. Python爬虫一:爬取上交所上市公司信息
  12. 几个APP开发的创意
  13. 大数据基础知识问答----hadoop篇
  14. 《前端之路》之 初识 JavaScript
  15. python语法_列表list_列表内置方法
  16. java提高(1)---异常
  17. 如何弄清Linux系统运行何种系统管理程序
  18. C#批量删除注释与空行
  19. MySql 创建索引原则
  20. MongoDB集群单mongos的问题总结

热门文章

  1. Codeforces Round #678 (Div. 2)【ABCD】
  2. Color Changing Sofa Gym - 101962B、Renan and Cirque du Soleil Gym - 101962C、Hat-Xor Gym - 101962E 、Rei do Canga&#231;o Gym - 101962K 、Sorting Machine Gym - 101962M
  3. B、小花梨的三角形(解题报告)
  4. 使用scrapy爬取jian shu文章
  5. Java——方法及构造方法、intellij IDEA中的一些快捷键
  6. 在WLS2下开发和部署NET Core3.1目录
  7. smartbits国产版本minismb –快速安装上手指南
  8. [Golang]-5 协程、通道及其缓冲、同步、方向和选择器
  9. 使用 Typecho 搭建博客
  10. Linux CentOS7.x 升级内核的方法