1、下载地址
https://www.rabbitmq.com/install-standalone-mac.html
2、解压至某个文件夹下
3、切换至文件夹下面
4、启动rabbitMQ
cd sbin/
./rabbitmq-server restart
5、rabbitMQ有个默认的用户guest,密码也是guest。guest这个默认的用户只能通过http://localhost:15672 来登录,处于安全的考虑,其他的IP无法直接使用这个账号。
若无法访问,在sbin/目录下执行rabbitmq-plugins enable rabbitmq_management即可。
6、查看rabbitmq状态
rabbitmqctl status
7、添加环境变量
vi ~/.bash_profile
RABBITMQ_HOME=/Java/rabbitmq/rabbitmq_server-3.7.16/sbin
PATH=$PATH:$RABBITMQ_HOME
指令生效
source ~/.bash_profile
方式new:
brew install rabbitmq
cd /usr/local/Cellar/rabbitmq/3.7.16/
brew services start rabbitmq
进入控制台: http://localhost:15672/
用户名和密码:guest,guest
关闭:brew services stop rabbitmq
测试
添加依赖
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
</dependency>
代码
package com.aaa.rabbit;
import com.rabbitmq.client.*;
import org.junit.Test;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicInteger;
public class RabbitMqTest {
//消息队列名称
private final static String QUEUE_NAME = "hello";
@Test
public void send() throws java.io.IOException, TimeoutException {
//创建连接工程
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("127.0.0.1");
factory.setPort(5672);
factory.setUsername("guest");
factory.setPassword("guest");
//创建连接
Connection connection = factory.newConnection();
//创建消息通道
Channel channel = connection.createChannel();
//生成一个消息队列
channel.queueDeclare(QUEUE_NAME, true, false, false, null);
for (int i = 0; i < 10; i++) {
String message = "Hello World RabbitMQ count: " + i;
//发布消息,第一个参数表示路由(Exchange名称),未""则表示使用默认消息路由
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
System.out.println("Sent '" + message + "'");
}
//关闭消息通道和连接
channel.close();
connection.close();
}
@Test
public void consumer() throws java.io.IOException, java.lang.InterruptedException, TimeoutException {
//创建连接工厂
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("127.0.0.1");
factory.setPort(5672);
factory.setUsername("guest");
factory.setPassword("guest");
//创建连接
Connection connection = factory.newConnection();
//创建消息信道
final Channel channel = connection.createChannel();
//消息队列
channel.queueDeclare(QUEUE_NAME, true, false, false, null);
System.out.println("Waiting for message. To exist press CTRL+C");
AtomicInteger count = new AtomicInteger(0);
//消费者用于获取消息信道绑定的消息队列中的信息
Consumer 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");
try {
System.out.println("Received '" + message);
} finally {
System.out.println("Done");
channel.basicAck(envelope.getDeliveryTag(), false);
}
}
};
channel.basicConsume(QUEUE_NAME, false, consumer);
Thread.sleep(1000 * 60);
}
}