安装
首先要安装erlang
yum install epel-release
yum install erlang
然后安装rabbitmq-server
yum install rabbitmq-server
启动
service rabbitmq-server start
查看服务状态
service rabbitmq-server status
停止服务命令
service rabbitmq-server stop
启用web控制台
rabbitmq-plugins enable rabbitmq_management
快速整合
引入maven依赖:
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.1.2</version>
</dependency>
获取连接的工具类:
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ConnectionUtil {
public static final String QUEUE_NAME = "queue";
public static final String EXCHANGE_NAME = "exchange";
public static Connection getConnection() throws Exception {
// 创建连接工厂
ConnectionFactory connectionFactory = new ConnectionFactory();
// 设置rabbitmq连接地址,端口,用户名,密码,vhost
connectionFactory.setHost("127.0.0.1");
connectionFactory.setPort(5672);
connectionFactory.setUsername("test");
connectionFactory.setPassword("test");
connectionFactory.setVirtualHost("testhost");
return connectionFactory.newConnection();
}
}
生产者:
public class Producer {
public static void send(String message) throws Exception {
Connection connection = ConnectionUtil.getConnection();
Channel channel = connection.createChannel();
// 声明queue
channel.queueDeclare(ConnectionUtil.QUEUE_NAME, true, false, false, null);
// 声明exchange类型
channel.exchangeDeclare(ConnectionUtil.EXCHANGE_NAME, "fanout");
// 绑定交换机和队列
channel.queueBind(ConnectionUtil.QUEUE_NAME, ConnectionUtil.EXCHANGE_NAME, "");
// 发送消息
channel.basicPublish(ConnectionUtil.EXCHANGE_NAME, "", null, message.getBytes());
System.out.println("发送:" + message);
channel.close();
connection.close();
}
}
消费者:
public class Consumer {
public static void getMessage() throws Exception {
Connection connection = ConnectionUtil.getConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(ConnectionUtil.QUEUE_NAME,true,false,false,null);
DefaultConsumer consumer = new DefaultConsumer(channel) {
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
System.out.println(new String(body, "UTF-8"));
}
};
channel.basicConsume(ConnectionUtil.QUEUE_NAME, consumer);
}
}