1.docker部署rabbitmq

docker pull rabbitmq:3.7.7-management

docker run -d --name rabbitmq3.7.7 -p 5672:5672 -p 15672:15672 --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq:3.7.7-management

说明:

-d 后台运行容器;

–name 指定容器名;

-p 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号);

-v 映射目录或文件;

–hostname 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);

-e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)

可以使用浏览器打开web管理端:http://Server-IP:15672

rabbitmq的部署与java操作_docker

2.引入依赖

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

3.java 操作

3.1 配置类ConnectionUtils
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

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

/**
* @Auther: liuysh
* @Date: 2021/2/2 22:48
* @Description:
*/
public class ConnectionUtils {
public static Connection getConnection() throws TimeoutException, IOException {

ConnectionFactory factory = new ConnectionFactory();

factory.setHost("你的ip");

factory.setPort(5672);

factory.setVirtualHost("test");

factory.setUsername("test");

factory.setPassword("test");

return factory.newConnection();
}
}
3.2 生产者SendSms
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
/**
* @Auther: liuysh
* @Date: 2021/2/2 22:49
* @Description:
*/
public class SendSms {
private static final String QUEUE_NAME = "simple_queue";

public static void main(String[] args) {
Connection connection = null;
Channel channel = null;
try {
connection = ConnectionUtils.getConnection();
channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME,false,false,false,null);
String msg = "hello rabbitmq : " + System.currentTimeMillis();
channel.basicPublish("",QUEUE_NAME,null,msg.getBytes());
System.out.println("send msg to rabbitmq:" + msg );
} catch (Exception e ) {
e.printStackTrace();
} finally {
try {
channel.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
3.3 消费者ReceiveSms
import com.rabbitmq.client.*;

import java.io.IOException;
/**
* @Auther: liuysh
* @Date: 2021/2/2 22:14
* @Description:
*/
public class ReceiveSms {
private static final String QUEUE_NAME = "simple_queue";

public static void main(String[] args) {
Connection connection = null;
Channel channel = null;
try {
connection = ConnectionUtils.getConnection();
channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME,false,false,false,null);
DefaultConsumer 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("receive msg :" + msg);
}
};
//监听队列
channel.basicConsume(QUEUE_NAME,true,consumer);

} catch (Exception e ) {
e.printStackTrace();
}
}

}