因为项目需要提供多种对外输出,kafka, RocketMQ。RabbitMQ这些都是对外输出选项。因此简要学些和编写rabbitMQ例子
本文属于非常初级的RabbitMQ介绍,主要包含安装、发送消息以及控台台查看消息。
安装
RabbitMQ是Erlang语言编写的,因此需要先安装Erlang。 我在Windows10安装,按照官方文档需要64-bit supported version of Erlang。 可以在http://www.erlang.org/downloads下载Erlang。以管理员身份安装Erlang。
之后下载rabbitmq-server-3.7.11.exe,双击安装即可。
Windows上安装的官方文档在https://www.rabbitmq.com/install-windows.html
启动命令非常简单, 在安装命令的sbin目录中执行
rabbitmq-server.bat start
启动管理界面
官方文档 https://www.rabbitmq.com/management.html
rabbitmq-plugins enable rabbitmq_management
登录控制台, 默认用户和密码都是guest
http://127.0.0.1:15672
发送消息
下面是一个简单java发送例子。RabbitMQ有多重语言的客户端,我们选在最常用的java client
依赖包为
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.1.2</version>
</dependency>
代码为
package com.yq.producer;
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.ConnectionFactory;
import org.apache.commons.lang3.StringUtils;
import javax.websocket.SendResult;
import java.nio.charset.Charset;
/**
* Simple to Introduction
* className: SyncProducer
*
* @author EricYang
* @version 2019/1/29 15:03
*/
public class SyncProducer {
private static final String host = ConnectionFactory.DEFAULT_HOST;
private static final int port = ConnectionFactory.DEFAULT_AMQP_PORT;
private static final String virtualHost = ConnectionFactory.DEFAULT_VHOST;
private static final String username = ConnectionFactory.DEFAULT_USER;
private static final String password = ConnectionFactory.DEFAULT_PASS;
private static final Charset UTF8 = Charset.forName("UTF-8");
public static void main(String[] args) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
// "guest"/"guest" by default, limited to localhost connections
factory.setUsername(username);
factory.setPassword(password);
factory.setVirtualHost(virtualHost);
factory.setHost(host);
factory.setPort(port);
Connection conn = factory.newConnection();
Channel channel = conn.createChannel();
AMQP.BasicProperties properties = null;
String exchangeName = "name1";
String routingKey = "key1.cc";
String msg = "test data";
try {
channel.basicPublish(
exchangeName,
routingKey,
properties,
msg.getBytes(UTF8));
}
catch (Exception ex) {
ex.printStackTrace();
}
finally {
channel.close();
conn.close();
}
System.out.println("done");
}
}
查看消息
关于exchange和queue直接关系可以查看其它博客或者官方文档。
例如这篇博客 https://www.cnblogs.com/dwlsxj/p/RabbitMQ.html
本文直接简单使用topic类型的exchagne,然后通过key将消息路由到对应queue中