1.在SpringBoot工程引入rabbitmq依赖
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.6.5</version>
</dependency>
2.代码实现
2.1生产端
public class Procuder {
public static void main(String[] args)throws Exception {
//1.创建ConnectionFactory
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("192.168.0.10");
connectionFactory.setUsername("admin");
connectionFactory.setPassword("admin");
connectionFactory.setPort(5672);
connectionFactory.setVirtualHost("/");
//2.创建连接工厂
Connection connection = connectionFactory.newConnection();
//3.通过connection创建一个Channel
Channel channel = connection.createChannel();
//4.通过channel发送数据
String exchange = "";//交换机
String routingKey ="test001";//路由键
BasicProperties props=null;//附加属性
String body = "Hello RabbitMq";//消息内容
channel.basicPublish(exchange, routingKey, props, body.getBytes());
channel.close();
connection.close();
}
}
2.2消费端
public class Consumer {
public static void main(String[] args)throws Exception {
//1.创建ConnectionFactory
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("192.168.0.10");
connectionFactory.setPort(5672);
connectionFactory.setUsername("admin");
connectionFactory.setPassword("admin");
connectionFactory.setVirtualHost("/");
//2.创建连接工厂
Connection connection = connectionFactory.newConnection();
//3.通过connection创建一个Channel
Channel channel = connection.createChannel();
//4.声明一个队列
String routingKey ="test001";//路由键,如果没有定义队列,默认和routeKey一致
String queueName = routingKey;
boolean durable = true;//是否持久化
boolean exclusive= false;//队列独占方式,只有这一个连接可以消费,保证顺序
boolean autoDelete= false;//当这个Exchange没有队列时 是否删除
Map<String, Object> arguments = null;//扩展参数
channel.queueDeclare(queueName, durable, exclusive, autoDelete, arguments);
//5.创建消费者
QueueingConsumer queueingConsumer = new QueueingConsumer(channel);
//6.设置Channel
boolean autoAck = true;//是否自动签收
channel.basicConsume(queueName, autoAck, queueingConsumer);
//7.获取消息
while(true) {
Delivery delivery = queueingConsumer.nextDelivery();
String msg =new String( delivery.getBody());
System.out.println("消费端:"+msg);
}
}
}
3.执行结果