1.生产者代码
import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import java.io.IOException; import java.time.LocalDateTime; import java.util.concurrent.TimeoutException; public class Producer { private final static String EXCHANGE_NAME = "jeff_exchange"; private final static String QUEUE_NAME = "e_q_name"; public static void main(String[] args) throws IOException, TimeoutException { // 创建连接和频道 ConnectionFactory factory = new ConnectionFactory(); factory.setHost("47.99.192.143"); factory.setUsername("jeff"); factory.setPassword("123456"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); // 声明转发器和类型 直连 channel.exchangeDeclare(EXCHANGE_NAME, "direct" ); boolean staticQueue = true;//是否持久化 channel.queueDeclare(QUEUE_NAME, staticQueue, false, !staticQueue, null); channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, QUEUE_NAME); String message = LocalDateTime.now()+" '"+ Producer.class+"': hello"; // 往转发器上发送消息 channel.basicPublish(EXCHANGE_NAME, QUEUE_NAME, null, message.getBytes()); System.out.println("[Sent]'" + message + "'"); channel.close(); connection.close(); } }
2.消费者代码
import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.QueueingConsumer; import java.util.concurrent.TimeoutException; public class Consumer { private final static String EXCHANGE_NAME = "jeff_exchange"; private final static String QUEUE_NAME = "e_q_name"; public static void main(String[] argv) throws java.io.IOException, InterruptedException, TimeoutException { // 创建连接和频道 ConnectionFactory factory = new ConnectionFactory(); factory.setHost("47.99.192.143"); factory.setUsername("jeff"); factory.setPassword("123456"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.exchangeDeclare(EXCHANGE_NAME, "direct"); boolean staticQueue = true;//是否持久化 channel.queueDeclare(QUEUE_NAME, staticQueue, false, !staticQueue, null); channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, QUEUE_NAME); System.out.println(" ["+ Consumer.class+"] Waiting for messages................"); QueueingConsumer consumer = new QueueingConsumer(channel); // 指定接收者,第二个参数为自动应答,无需手动应答 channel.basicConsume(QUEUE_NAME, true, consumer); while (true) { QueueingConsumer.Delivery delivery = consumer.nextDelivery(); String message = new String(delivery.getBody()); System.out.println(" ["+ Consumer.class+"] Received '" + message + "'"); } } }
3.demo地址
https://gitee.com/jefffeng/rabbitmqdemo