provide
package HelloWord;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;
import org.junit.Test;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeoutException;
/**
* @ProjectName: MyRabbitMQ
* @Package: HelloWord
* @ClassName: Provider
* @Author: zxh
* @Description: 生产消息
* @Date: 2022/1/12 10:51
* @Version: 1.0
*/
public class Provider {
@Test
public void testSendMessage() throws IOException, TimeoutException {
//创建连接mq的连接工厂对象
ConnectionFactory connectionFactory = new ConnectionFactory();
//设置连接rabbitmq的主机
connectionFactory.setHost("连接服务器地址");
//设置端口号
connectionFactory.setPort(5672);
//设置连接哪个虚拟主机
connectionFactory.setVirtualHost("虚拟主机名称");
//设置访问虚拟主机的用户名和密码
connectionFactory.setUsername("账户");
connectionFactory.setPassword("密码");
//获取连接对象
Connection connection = connectionFactory.newConnection();
//获取连接中的通道对象,一个通道可以向不同队列发送消息
Channel channel = connection.createChannel();
//通道绑定对应的消息队列
//参数一:绑定队列,名称 如果不存在则自动创建
//参数二:用来定义队列的特性是否要持久化。true为持久化,即当RabbitMQ服务关闭时,若此处为false,队列同时也会被销毁,消息是否被销毁,由设置决定
//参数三:是否独占队列,即当前连接独占队列,true表示独占
//参数四:是否在消费完成后自动删除队列,true,自动删除,即当消费者消费完消息关闭连接后,队列将被删除
//参数五:额外参数
channel.queueDeclare("hello", false, false, false, null);
//发布消息
//参数1:交换机名称
//参数2:队列名称
//参数3:传递消息额外设置,(MessageProperties.PERSISTENT_TEXT_PLAIN)持久化消息,不会随RabbitMQ重启而丢失
//参数4:消息的具体内容
channel.basicPublish("", "hello", null, "hello RabbitMQ".getBytes(StandardCharsets.UTF_8));
//关闭
channel.close();
connection.close();
}
}
consumer
package HelloWord;
import com.rabbitmq.client.*;
import org.junit.Test;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
/**
* @ProjectName: MyRabbitMQ
* @Package: HelloWord
* @ClassName: Customer
* @Author: zxh
* @Description: 消费消息
* @Date: 2022/1/12 11:22
* @Version: 1.0
*/
public class Consumer {
public static void main(String[] args) throws IOException, TimeoutException {
//创建连接mq的连接工厂对象
ConnectionFactory connectionFactory = new ConnectionFactory();
//设置连接rabbitmq的主机
connectionFactory.setHost("连接服务器地址");
//设置端口号
connectionFactory.setPort(5672);
//设置连接哪个虚拟主机
connectionFactory.setVirtualHost("虚拟主机名称");
//设置访问虚拟主机的用户名和密码
connectionFactory.setUsername("账户");
connectionFactory.setPassword("密码");
//创建连接对象
Connection connection = connectionFactory.newConnection();
//创建通道
Channel channel = connection.createChannel();
//通道绑定对象(要与生产者的参数一致)
channel.queueDeclare("hello",false,false,false,null);
//消费消息
//参数1:消费哪个队列的消息(队列名称)
//参数2:开启消息的自动确认机制
//参数3:消费时的回调接口
channel.basicConsume("hello",true,new DefaultConsumer(channel){
/*
* 最后一个参数:消息队列中取出的消息
* */
@Override
public void handleDelivery(String consumerTag, Envelope envelope,AMQP.BasicProperties properties,byte[] bodys){
System.out.println(new String(bodys));
}
});
//channel.close();
//connection.close();
}
}