![]()
一、实现步骤
1.jdk1.8
2.idea:构建maven项目
3.导入rabbitmq的maven依赖
4.启动rabbitmq-server服务
5.定义生产者
6.定义消费者
7.观察消息的再rabbitmq-server服务中的过程
注意:队列前面一定会有个交换机(可能是默认交换机AMPQ)
二、maven依赖
<!--导入rabbitmq依赖-->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.10.0</version>
</dependency>
三、Simple简单模式案例
消费者
import com.rabbitmq.client.*;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
public class Consumer {
public static void main(String[] args) throws IOException, TimeoutException {
//所有的中间件技术都是基于TCP/IP协议基础构建的协议规范,rabbitmq遵循的是ampq协议
//1.创建连接工厂
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("127.0.0.1");
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest");
connectionFactory.setPort(5672);
connectionFactory.setVirtualHost("/");
//2.创建连接Connection
Connection connection = connectionFactory.newConnection();
//3.通过连接获取通道channel
Channel channel = connection.createChannel();
//4.通过通道创建交换机、声明队列、绑定关系、路由key、发送消息、和接受消息
channel.basicConsume("q1", true, new DeliverCallback() {
@Override
public void handle(String consumerTag, Delivery message) throws IOException {
System.out.println("收到消息是:" + new String(message.getBody(), "UTF-8"));
}
}, new CancelCallback() {
@Override
public void handle(String consumerTag) throws IOException {
System.out.println("接受消息失败...");
}
});
System.out.println("开始接受消息");
System.in.read();
//7.关闭通道
channel.close();
//8.关闭连接
connection.close();
}
}
生产者
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 Producer {
public static void main(String[] args) throws IOException, TimeoutException {
//所有的中间件技术都是基于TCP/IP协议基础构建的协议规范,rabbitmq遵循的是ampq协议
//1.创建连接工厂
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("127.0.0.1");
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest");
connectionFactory.setPort(5672);
connectionFactory.setVirtualHost("/");
//2.创建连接Connection
Connection connection = connectionFactory.newConnection();
//3.通过连接获取通道channel
Channel channel = connection.createChannel();
//4.通过通道创建交换机、声明队列、绑定关系、路由key、发送消息、和接受消息
String queueName="q1";
/*
参数一:队列名称
参数二:是否要持久化
参数三:排他性,是否独占
参数四:是否自动删除
参数五:携带附属参数
*/
channel.queueDeclare(queueName,false,false,false,null);
//5.准备消息内容
String msg="hello";
//6.发送消息给队列queue
/*
参数一:交换机
参数二:队列、路由key
参数三:消息的状态控制
参数四:消息主体
*/
channel.basicPublish("",queueName,null,msg.getBytes());
//7.关闭通道
channel.close();
//8.关闭连接
connection.close();
System.out.println("生产成功");
}
}