RabbitMQ是一种消息中间件,它接收和转发消息,能够理解为邮局。只是RabbitMQ接收,处理,转发的是二进制的数据,邮局处理的通常为纸。html
brew install rabbitmq
复制代码
cat << EOF > /etc/yum.repos.d/rabbit.repo
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/21/el/7
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1
EOF
yum install rabbitmq-server
复制代码
rabbitmq-server
复制代码
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>4.2.0</version>
</dependency>
复制代码
/** * @author aihe 2018/9/6 */
public class Producer {
private final static String QUEUE_NAME = "hello1";
public static void main(String[] args) throws IOException, TimeoutException {
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("127.0.0.1");
Connection connection = connectionFactory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Hello World";
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
System.out.println("发送消息:" + message);
try {
channel.close();
connection.close();
} catch (TimeoutException e) {
e.printStackTrace();
}
}
}
复制代码
channel.queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments)java
生产和消费消息都是经过channel的。channel指定具体为那个queuepython
/** * @author aihe 2018/9/6 */
public class Consumer {
private final static String QUEUE_NAME = "hello1";
public static void main(String[] args) throws IOException, TimeoutException {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("127.0.0.1");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println(" [*] 正在等待消息. 退出按 CTRL+C");
com.rabbitmq.client.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");
System.out.println(" 接收消息:'" + message + "'");
}
};
channel.basicConsume(QUEUE_NAME, true, consumer);
}
}
复制代码
生产者 bash
消费者 服务器
// 查看有哪些插件
rabbitmq-plugins list
// 启用管理界面
rabbitmq-plugins enable rabbitmq_management
复制代码
这些参数大部分都是能够从rabbitmqctl命令得到的。ide
学习下消息中间件学习