①. Simple简单模式
- ①. 简单模式分析如下:
生产者:发送消息到RabbitMQ队列(simple_queue)
消费者:接收RabbitMQ队列消息
②. 导入对于的依赖、工具类的抽取
<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.6.0</version> </dependency>
public class ConnectionUtil { public static Connection getConnection() throws IOException, TimeoutException { //1. 创建连接工厂(设置RabbitMQ的连接参数); ConnectionFactory connectionFactory = new ConnectionFactory(); //主机;默认localhost connectionFactory.setHost("139.198.169.136"); //连接端口;默认5672 connectionFactory.setPort(5672); //虚拟主机;默认/ connectionFactory.setVirtualHost("/myvitrualhost"); //用户名;默认guest connectionFactory.setUsername("tang"); //密码;默认guest connectionFactory.setPassword("9602111022yxTZ@"); //2. 创建连接; return connectionFactory.newConnection(); } }
③. 编写生产者
注意:设置虚拟机,一个mq服务可以设置多个虚拟机,每个虚拟机就相当于一个独立的mq
public class Producer { static final String QUEUE_NAME = "simple_queue"; public static void main(String[] args) throws Exception{ //1. 创建连接工厂(设置RabbitMQ的连接参数); ConnectionFactory connectionFactory = new ConnectionFactory(); //主机;默认localhost connectionFactory.setHost("139.198.169.136"); //连接端口;默认5672 connectionFactory.setPort(5672); //虚拟主机;默认/ connectionFactory.setVirtualHost("/myvitrualhost"); //用户名;默认guest connectionFactory.setUsername("tang"); //密码;默认guest connectionFactory.setPassword("9602111022yxTZ@"); //2. 创建连接; Connection connection = connectionFactory.newConnection("简单模式生产者"); //3. 创建频道; Channel channel = connection.createChannel(); //4. 声明队列:如果队列在mq中没有则要创建 /** * 参数1:队列名称: * 参数2:是否定义持久化队列(消息会持久化保存在服务器上) * 所谓持久化消息是否存盘,如果false,非持久化 * 参数3:是否独占本连接,队列只允许在该连接中访问,如果连接关闭后队列自动删除, * (如果将此参数设置为true可用于临时队列的创建) * 参数4:是否在不使用的时候队列自动删除,如果将此参数和参数3设置为true就可以实现 * 临时队列[队列不用了就自动删除] * 参数5:参数,可以设置一个队列的扩展参数,比如:可设置存活时间 */ channel.queueDeclare(QUEUE_NAME, true, false, false, null); //5. 发送消息; String message = "你好!小兔纸。"; /** * 参数1:交换机名称;如果没有则指定空字符串(表示使用默认的交换机) * 参数2:路由key,简单模式中可以使用队列名称 * 交换机根据路由key来将消息转发到指定的队列,如果使用默认的交换机, * routingKey要设置为队列的名称 * 参数3:消息其它属性 * 参数4:消息内容 */ channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); System.out.println("已发送消息:" + message); //6. 关闭资源 channel.close(); connection.close(); } }