RabbitMQ简单测试

版本

RabbitMQ简单测试_第1张图片

pom


        com.rabbitmq
        amqp-client
        3.6.5

Customer类

package com.xray.rabbitmq;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Consumer;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;

public class Customer {

	private static final String QUEUE_NAME = "rabbitMQ.test";
	
	public static void main(String[] args) throws IOException, TimeoutException {
		ConnectionFactory factory = new ConnectionFactory();
		factory.setHost("localhost");
		factory.setUsername("eric");
        factory.setPassword("123456");
        factory.setHost("localhost");
		Connection connection = factory.newConnection();
		final Channel channel = connection.createChannel();
		//声明交换器
        String exchangeName = "hello-exchange";
        channel.exchangeDeclare(exchangeName, "direct", true);
        //声明队列
        String queueName = channel.queueDeclare().getQueue();
        String routingKey = "hola";
        //绑定队列,通过键 hola 将队列和交换器绑定起来
        channel.queueBind(queueName, exchangeName, routingKey);

        while(true) {
            //消费消息
            boolean autoAck = false;
            String consumerTag = "";
            channel.basicConsume(queueName, autoAck, consumerTag, new DefaultConsumer(channel) {
                @Override
                public void handleDelivery(String consumerTag,Envelope envelope,AMQP.BasicProperties properties,byte[] body) throws IOException {
                    String routingKey = envelope.getRoutingKey();
                    String contentType = properties.getContentType();
                    System.out.println("消费的路由键:" + routingKey);
                    System.out.println("消费的内容类型:" + contentType);
                    long deliveryTag = envelope.getDeliveryTag();
                    //确认消息
                    channel.basicAck(deliveryTag, false);
                    System.out.println("消费的消息体内容:");
                    String bodyStr = new String(body, "UTF-8");
                    System.out.println(bodyStr);

                }
            });
        }

		/*channel.exchangeDeclare(QUEUE_NAME, "direct",true);
		String queueName = channel.queueDeclare().getQueue();
		channel.queueBind(queueName, QUEUE_NAME, "message");
		//channel.queueDeclare(QUEUE_NAME, false, false, true, null);
		System.out.println("Customer Waiting Received messages");
		while(true){
			boolean autoAck = false;
			String consumerTag = "";
			channel.basicConsume(queueName,autoAck,consumerTag, new DefaultConsumer(channel){
				@Override
				public void handleDelivery(String consumerTag,Envelope envelope,AMQP.BasicProperties properties,byte[] body) throws IOException{
					String routingKey = envelope.getRoutingKey();
                    String contentType = properties.getContentType();
                    System.out.println("消费的路由键:" + routingKey);
                    System.out.println("消费的内容类型:" + contentType);
                    long deliveryTag = envelope.getDeliveryTag();
                    //确认消息
                    channel.basicAck(deliveryTag, false);
                    System.out.println("消费的消息体内容:");

					String message = new String(body,"UTF-8");
					System.out.println("Customer Received '"+message+"'");
				}
			});
		
		}*/
	}
}

Producer:

package com.xray.rabbitmq;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

public class Producer {

	public final static String QUEUE_NAME = "rabbitMQ.test";
	
	public static void main(String[] args) throws IOException, TimeoutException{
		ConnectionFactory factory = new ConnectionFactory();
		factory.setHost("localhost");
		factory.setUsername("eric");
        factory.setPassword("123456");
		Connection connection = factory.newConnection();
		/*Channel channel = connection.createChannel();
		channel.exchangeDeclare(QUEUE_NAME, "direct",true);
		
		//channel.queueDeclare(QUEUE_NAME, false, false, false, null);
		String message = "Hello RabbitMQ";
		channel.basicPublish(QUEUE_NAME, "message",null, message.getBytes("UTF-8"));
		System.out.println("Producer Send '" + message+ "'");*/
		//获得信道
        Channel channel = connection.createChannel();
        //声明交换器
        String exchangeName = "hello-exchange";
        channel.exchangeDeclare(exchangeName, "direct", true);

        String routingKey = "hola";
        //发布消息
        byte[] messageBodyBytes = "quit".getBytes();
        channel.basicPublish(exchangeName, routingKey, null, messageBodyBytes);


		channel.close();
		connection.close();
	}
}

简单的实现,现在正在学习当中。

你可能感兴趣的:(RabbitMQ简单测试)