使用IDEA开发RabbitMQ教程系列(二)RabbitMQ的Hello World之旅

使用IDEA快速开发

1、使用IDEA创建springboot项目
在这里插入图片描述
在这里插入图片描述
目前我们不需要引入任何组件,直接一路NEXT创建好项目即可;

2、打开POM.XML文件加载RabbitMQ依赖

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

3、创建生产者

public class HelloWorldProcuder{

	public static void main(String[] args) throws Exception {
		//1 创建一个ConnectionFactory, 并进行配置
		ConnectionFactory connectionFactory = new ConnectionFactory();
		//服务器的IP地址
		connectionFactory.setHost("192.168.1.28");
		//端口
		connectionFactory.setPort(5672);
		//指定HOST
		connectionFactory.setVirtualHost("/");
		//登录名
		connectionFactory.setUsername("toher");
		//密码
		connectionFactory.setPassword("toher888");
		//2 通过连接工厂创建连接
		Connection connection = connectionFactory.newConnection();
		//3 通过connection创建一个Channel
		Channel channel = connection.createChannel();
		//4 通过Channel发送数据
		for(int i=0; i < 5; i++){
			String msg = "Hello RabbitMQ!";
			/**
			 * 1 exchange
			 * 2 routingKey
			 * 3 传递AMQP.BasicProperties属性信息
			 * 4 消息
			 */
			channel.basicPublish("", "test001", null, msg.getBytes());
		}

		//5 记得要关闭相关的连接
		channel.close();
		connection.close();
	}
}

4、创建消费者

public class HelloWorldConsumer{

	public static void main(String[] args) throws Exception {
		
		//1 创建一个ConnectionFactory, 并进行配置
		ConnectionFactory connectionFactory = new ConnectionFactory();
		connectionFactory.setHost("192.168.1.28");
		connectionFactory.setPort(5672);
		connectionFactory.setVirtualHost("/");
		connectionFactory.setUsername("toher");
		connectionFactory.setPassword("toher888");
		//2 通过连接工厂创建连接
		Connection connection = connectionFactory.newConnection();
		//3 通过connection创建一个Channel
		Channel channel = connection.createChannel();
		//4 声明(创建)一个队列
		String queueName = "test001";
		channel.queueDeclare(queueName, true, false, false, null);
		//5 创建消费者
		Consumer consumer = new DefaultConsumer(channel){
			@Override
			public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body)
					throws IOException {
				String msg = new String(body, "UTF-8");
				System.out.println("消费端:" + msg);
			}
		};
		//6 订阅消息
		channel.basicConsume(queueName, true, consumer);
		
		
	}
}

最终的目录结构
在这里插入图片描述
5、运行测试
分别启动HelloWorldConsumer 和 HelloWorldProcuder 结果如下:
在这里插入图片描述
证明我们的Hello World之旅已经初步完成了!
我们需要了解的两个方法:
queueDeclare:
队列声明queueDeclare的参数:第一个参数表示队列名称、第二个参数为是否持久化(true表示是,队列将在服务器重启时生存)、第三个参数为是否是独占队列(创建者可以使用的私有队列,断开后自动删除)、第四个参数为当所有消费者客户端连接断开时是否自动删除队列、第五个参数为队列的其他参数

basicConsume:
关于basicConsume的第二个参数autoAck: 应答模式,true:自动应答,即消费者获取到消息,该消息就会从队列中删除掉,false:手动应答,当从队列中取出消息后,需要程序员手动调用方法应答,如果没有应答,该消息还会再放进队列中,就会出现该消息一直没有被消费掉的现象

导航

上一篇:初识RabbitMQ
下一篇:RabbitMQ的Exchange交换机的详细使用

评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Micro麦可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值