2. Hello World
2.1 依赖
新建maven工程
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!--rabbitmq 客户端-->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.8.0</version>
</dependency>
<!--操作文件io流-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
2.2 消息生产者
public class Producer {
//队列名
public static final String QUEUE_NAME = "hello";
//发消息
public static void main(String[] args) throws IOException, TimeoutException {
//创建连接工厂
ConnectionFactory factory = new ConnectionFactory();
//ip
factory.setHost("192.168.29.101");
//用户名
factory.setUsername("admin");
//密码
factory.setPassword("admin");
//创建连接
Connection connection = factory.newConnection();
//获取信道
Channel channel = connection.createChannel();
/*
* 创建一个队列
* 参数1:队列名
* 参数2:是否持久化,默认存储在内存,不持久化
* 参数3:该队列是否消息共享,true:共享,支持多个消费者
* 参数4:是否自动删除,true:是
* 参数5:其它参数
*/
channel.queueDeclare("hello", false, false, false, null);
//消息内容
String message = "hello world";
/*
*参数1:发送到哪个交换机
* 参数2:路由的key值是哪个,本次队列的名称
* 参数3:其它参数信息
* 参数4:消息体
*/
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
System.out.println("消息发送完成...");
}
}
2.3 消息消费者
public class Consumer {
public static final String QUEUE_NAME = "hello";
//接收消息
public static void main(String[] args) throws IOException, TimeoutException {
//创建连接工厂
ConnectionFactory factory = new ConnectionFactory();
//ip
factory.setHost("192.168.29.101");
//用户名
factory.setUsername("admin");
//密码
factory.setPassword("admin");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
/**
* 消费者消费消息
* 1:消费哪个队列
* 2:消费成功后是否自动应答 true:自动应答
* 3:消费者成功消费的回调
* 4:消费者取消消费的回调
*/
channel.basicConsume(QUEUE_NAME, true, (consumerTag, message) -> {
System.out.println(new String(message.getBody()));
}, consumerTag -> {
System.out.println("消费消息被中断");
});
}
}