RabbitMQ 开始一个简单队列
1 简介
没有什么简介,一张图说明真的是简单队列模式
2工具
JDK_1.8
intellij_idea_2017.3.4
3 新建项目
新建任何一个项目都可以,主要就是要引入可调用rabbitmq 的关联jar包;
可以maven、可以 gradle
3.1 maven 地址
http://search.maven.org/#artifactdetails%7Ccom.rabbitmq%7Camqp-client%7C5.2.0%7Cjar
但是我用的是idea 工具新建 spring boot 项目直接引用rabbitmq
如果引用中有这个包基本上就可以用了
4 敲代码
4.1 敲一个连接工具类
package com.yzcq.rabbitmq.util; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import java.io.IOException; import java.util.concurrent.TimeoutException; public class ConnectionUtil { public static Connection getConnection() throws IOException, TimeoutException { ConnectionFactory rabbitMQConnectionFactory = new ConnectionFactory(); //设置服务器地址 rabbitMQConnectionFactory.setHost("127.0.0.1"); //设置端口号(每一种协议的端口号可能不一样,这里使用amqp协议) rabbitMQConnectionFactory.setPort(5672); //设置存储虚拟机 rabbitMQConnectionFactory.setVirtualHost("/"); //用户名 rabbitMQConnectionFactory.setUsername("chenjin"); //密码 rabbitMQConnectionFactory.setPassword("chenjin"); //创建连接 Connection connection = rabbitMQConnectionFactory.newConnection(); return connection; } } |
4.2 一个生产者
package com.yzcq.rabbitmq.simple; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.yzcq.rabbitmq.util.ConnectionUtil; import java.io.IOException; import java.util.concurrent.TimeoutException; /** * 生产者-简单工作队列 */ public class Send { private static final String QUEUE_NAME = "test-simple-queue"; public static void main(String[] args) throws IOException, TimeoutException { //获取连接 Connection connection = ConnectionUtil.getConnection(); //创建通道 Channel channel = connection.createChannel(); //声明一个队列 channel.queueDeclare(QUEUE_NAME, false, false, false, null); String msg = "hello,I am simple publish"; //发消息 channel.basicPublish("", QUEUE_NAME, null, msg.getBytes()); System.out.println("----send msg: " + msg); channel.close(); connection.close(); } } |
5.3 一个消费者
package com.yzcq.rabbitmq.workqueue; 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.yzcq.rabbitmq.util.ConnectionUtil; import java.io.IOException; import java.util.concurrent.TimeoutException; /** * 消费者-简单工作队列 */ public class Receiver { private static final String QUEUE_NAME = "test-simple-queue"; public static void main(String[] args) throws IOException, TimeoutException { Connection connection = ConnectionUtil.getConnection(); Channel channel = connection.createChannel(); channel.queueDeclare(QUEUE_NAME, false, false, false, null); DefaultConsumer consumer = new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body) throws IOException { String msg = new String(body); System.out.println("receive msg : " + msg); } }; channel.basicConsume(QUEUE_NAME, true, consumer); } } |