(1)建立连接
package com.utils;
import java.io.IOException;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
public class ConnectionUtils {
public static Connection getConnetions() throws IOException {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("127.0.0.1");
factory.setPort(5672);
factory.setVirtualHost("/vhost_zq");
factory.setUsername("develop");
factory.setPassword("123456");
return factory.newConnection();
}
}
(2)生产者
package com.producer;
import java.io.IOException;
import com.utils.ConnectionUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
public class send {
private static final String QUENE_NAME="test_simple_quene";
public static void main(String[] args) throws IOException{
Connection con=ConnectionUtils.getConnetions();
Channel channel=con.createChannel();
channel.queueDeclare(QUENE_NAME, false, false, false, null);
String msg="hello world!";
channel.basicPublish("", QUENE_NAME, null, msg.getBytes());
System.out.println("send:"+msg);
channel.close();
con.close();
}
}
(3)消费者
package com.resumer;
import java.io.IOException;
import com.utils.ConnectionUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConsumerCancelledException;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.QueueingConsumer.Delivery;
import com.rabbitmq.client.ShutdownSignalException;
public class Resive {
private static final String QUENE_NAME="test_simple_quene";
public static void main(String[] args) throws IOException, ShutdownSignalException, ConsumerCancelledException, InterruptedException{
Connection con=ConnectionUtils.getConnetions();
Channel channel=con.createChannel();
QueueingConsumer consumer=new QueueingConsumer(channel);
channel.basicConsume(QUENE_NAME,true,consumer);
while(true){
Delivery delivery =consumer.nextDelivery();
System.out.println("resive:"+new String(delivery.getBody()));
}
}
}
(4)由于QueueingConsumer 是马上过期的类,所以推荐使用新类:
package com.consumer;
import java.io.IOException;
import com.utils.ConnectionUtils;
import com.rabbitmq.client.AMQP.BasicProperties;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConsumerCancelledException;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.ShutdownSignalException;
public class Resive {
private static final String QUENE_NAME = "test_simple_quene";
public static void main(String[] args)
throws IOException, ShutdownSignalException, ConsumerCancelledException, InterruptedException {
Connection con = ConnectionUtils.getConnetions();
Channel channel = con.createChannel();
channel.queueDeclare(QUENE_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, "utf-8");
System.out.println("resieve msg:" + msg);
}
};
channel.basicConsume(QUENE_NAME, true, consumer);
}
}
这样 生产者一旦发送消息,消费者这边就会立即接收到消息了。
注意:消息一旦被取出,就不存在了。