Java客户端的HelloWorld

发表时间:2017-12-01 09:52:28 浏览量( 30 ) 留言数( 0 )

学习目标:

1、通过对Rabbit的官方入门教程了解Rabbit的消息发送。


学习过程:

    今天我们主要通过学习RabbitMQ的官网给出的实例进行学习。大家可以参考下面的网址

        https://www.rabbitmq.com/tutorials/tutorial-one-java.html

   我们先做第一个最简单的例子,我们需要把一条消息从生产者通过rabbitmq发送出去,然后消费者接收到这条消息

attcontent/7267e046-ccd6-43fc-b7bb-3602572df392.png

1、导入rabbitmq的包,pom.xml文件如下:

<dependency>
    <groupId>com.rabbitmq</groupId>
    <artifactId>amqp-client</artifactId>
    <version>4.3.0</version>
</dependency>

2、生产者发送消息

/**
 * 生产者
 * @author liubao
 *
 */
public class Producer {
	private final static String QUEUE_NAME = "hello";

	public static void main(String[] argv) throws Exception {

		//建立链接
		ConnectionFactory factory = new ConnectionFactory();
		factory.setHost("localhost");
		Connection connection = factory.newConnection();
		Channel channel = connection.createChannel();

		//我们需要先定义一个队列(queue),然后可以通过这个queue发布消息
		channel.queueDeclare(QUEUE_NAME, false, false, false, null);
		String message = "Hello World!";
		channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
		System.out.println(" [x] Sent '" + message + "'");

		//最后我们关闭这些链接信息
		channel.close();
		connection.close();
	}
}

3、消费者接收消息

/**
 * 消费者
 * 
 * @author liubao
 *
 */
public class Consumer {
	private final static String QUEUE_NAME = "hello";

	public static void main(String[] argv)
			throws java.io.IOException, java.lang.InterruptedException, TimeoutException {

		ConnectionFactory factory = new ConnectionFactory();
		factory.setHost("localhost");
		Connection connection = factory.newConnection();
		Channel channel = connection.createChannel();

		channel.queueDeclare(QUEUE_NAME, false, false, false, null);
		System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
		
		//
		DefaultConsumer consumer = new DefaultConsumer(channel) {
			@Override
			public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
					byte[] body) throws IOException {
				String message = new String(body, "UTF-8");
				System.out.println(" [x] Received '" + message + "'");
			}
		};
		channel.basicConsume(QUEUE_NAME, true, consumer);
	}
}

4、测试

先运行那一个都是可以的,因为通讯是异步的。

1、我们可以先运行生产者,生产运行后就会像MQ发送了一条消息,然后程序就结束了。你可以登陆Rabbit的后台管理可以看到又要给Hello的队列了。

2、再启动消费者端,你就可以看到接收的消息,消费者会从MQ的队列中把这个消息消费了。

3、再次启动生产者,再生产一条消息,可以看到消费马上就可以消费了。


总结:

  可以看到RabbitMQ的操作是非常简单的。