com.rabbitmq
amqp-client
4.10.0
org.slf4j
slf4j-log4j12
1.7.25
test
org.apache.commons
commons-lang3
3.9
二.创建消费者与生产者
如图简单的--simple简单模式是一个生产一个消费这样形成一个简单的消息队列的入门
- 消息产生着&&将消息放入队列
- 消息的消费者(consumer) 监听(while) 消息队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列中删除(隐患 消息可能没有被消费者正确处理,已经从队列中消失了,造成消息的丢失)应用场景:聊天(中间有一个过度的服务器;p端,c端)
三.编写生产者代码
这里个人感觉和原生的jdbc很像,先创建连接信息再去进行操作
package com.lanlan.Simple;
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 sheng {
//所有中间键技术都是基于tcp/ip协议之上来构建,只不过rabbitma是遵循ampq协议
public static void main(String[] args) throws IOException, TimeoutException {
//1:创建连接工程
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("101.35.114.23"); //填写你的ip
connectionFactory.setPort(5672); //mq 默认端口
connectionFactory.setUsername("guest"); //mq 管理员账号
connectionFactory.setPassword("guest"); //mq 管理员密码
connectionFactory.setVirtualHost("/");
//为下面提供对象
Connection connection = null;
Channel channel = null;
try{
//2:创建连接connnction
connection = connectionFactory.newConnection("客户端看见的消息");
//3:通过连接获取通道
channel = connection.createChannel();
//4:通过创建交换机,声明队列。绑定关系。路由key,发送消息,和接收消息
String queueName = "queue1";
channel.queueDeclare(queueName,false,false,false,null);
//5:准备消息内容
String message ="蓝蓝的代码人!!!!";
//6:发送出去给队列
channel.basicPublish("",queueName,null,message.getBytes());
System.err.println("发送消息成功");
} catch (IOException | TimeoutException e) {
e.printStackTrace();
} finally {
//7:关闭通道
if (channel!=null&& channel.isOpen()){
channel.close();
}
//8:关闭连接
if (connection !=null && connection.isOpen()){
connection.close();
}
}
}
}
这里感兴趣的可以打一个断点去看一下。
四.编写消费者代码
现在我们的生产者已经将信息发到了消息队列,我们应该编写一个消费找一条信息。
package lanlan.Simple;
import com.rabbitmq.client.*;
import java.io.IOException;
public class xiao {
//所有中间键技术都是基于tcp/ip协议之上来构建,只不过rabbitma是遵循ampq协议
public static void main(String[] args) throws Exception {
//1:创建连接工程
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("101.35.114.64");
connectionFactory.setPort(5672);
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest");
connectionFactory.setVirtualHost("/");
//为下面提供对象
Connection connection = null;
Channel channel = null;
try{
//2:创建连接connnction
connection = connectionFactory.newConnection("客户端看见的消息");
//3:通过连接获取通道xs
channel = connection.createChannel();
channel.queueDeclare("queue1", false, false, false, null);
DeliverCallback deliverCallback = (consumerTag, delivery) -> {
String message = new String(delivery.getBody(), "UTF-8");
System.out.println("消费的消息是" + message + "'");
};
channel.basicConsume("queue1", true, deliverCallback, consumerTag -> { });
} catch (Exception e) {
e.printStackTrace();
} finally {
//7:关闭通道
if (channel!=null&& channel.isOpen()){
channel.close();
}
//8:关闭连接
if (connection !=null && connection.isOpen()){
connection.close();
}
}
}
}
写好代码然后去消费他
这样简单的入门就完成了



