package com.wzc.springBootTest.controller;
import java.io.IOException;
import com.rabbitmq.client.AMQP.BasicProperties;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import com.wzc.springBootTest.utils.ConnectionUtils;
public class RecieveController {
private final static String QUEUE_NAME="hello";
public static void main(String[] args) throws Exception{
//获取连接以及频道
Connection connection= ConnectionUtils.getConnection();
Channel channel=connection.createChannel();
//声明队列
channel.queueDeclare(QUEUE_NAME,false,false,false,null);
System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
DefaultConsumer defaultConsumer = new DefaultConsumer(channel) {
@Override
public void handleDelivery(String consumerTag, Envelope Envelope,
BasicProperties properties, byte[] body) throws IOException {
String res = new String(body, "utf-8");
System.out.println(res);
}
};
channel.basicConsume(QUEUE_NAME, true, defaultConsumer);
// DeliverCallback callback=(consumerTag,delivery)->{
// String message=new String(delivery.getBody(),"UTF-8");
// System.out.println(" [x] Received '" + message + "'");
// };
//监听队列
// channel.basicConsume(QUEUE_NAME,true,callback,consumerTag->{});
}
}
package com.wzc.springBootTest.utils;
import java.io.IOException;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
public class ConnectionUtils {
public static Connection getConnection() throws IOException {
//创建连接工厂
ConnectionFactory connectionFactory=new ConnectionFactory();
//设置参数
connectionFactory.setHost("192.168.31.108");//主机ip
connectionFactory.setPort(5672);
connectionFactory.setVirtualHost("/test");//虚拟主机名
connectionFactory.setUsername("user_rain");//账号
connectionFactory.setPassword("user_rain");//密码
//创建连接
Connection newConnection = connectionFactory.newConnection();
return newConnection;
}
}
生产者端
package com.rainwer.test.controller;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rainwer.test.utils.ConnectionUtil;
public class TestController {
public static void main(String[] args) throws Exception {
//通过rabbitmq工具类得到连接
Connection connection= ConnectionUtil.getConnection();
//创建通道
Channel channel = connection.createChannel();
/*
* 创建消息队列(如果有可以不用创建,但创建会覆盖之前的)
* 第一参数:队列名称
* 第二参数:队列是否持久化(存储到磁盘)
* 第三参数:队列是否被独占
* 第四参数:队列是否自动删除
* 第五参数:
*/
channel.queueDeclare("hello", false, false, false, null);
//创建消息
String message="simple_queue";
/*
* 发送消息
* 第一参数:交换机名(简单模式不用交换机,但不能用null)
* 第二参数:队列名称
* 第三参数:
* 第四参数:消息(字节流)
*
*/
channel.basicPublish("", "hello", null, message.getBytes());
System.out.println("发送的消息:"+message);
//关闭资源
channel.close();
connection.close();
}
}
package com.rainwer.test.utils;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
public class ConnectionUtil {
public static Connection getConnection() throws Exception {
//创建连接工厂
ConnectionFactory connectionFactory = new ConnectionFactory();
//设置参数
connectionFactory.setHost("localhost");//主机ip
connectionFactory.setPort(5672);
connectionFactory.setVirtualHost("/test");//虚拟主机名
connectionFactory.setUsername("user_rain");//账号
connectionFactory.setPassword("user_rain");//密码
//创建连接
Connection newConnection = connectionFactory.newConnection();
return newConnection;
}
}
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.4.1</version>
</dependency>