博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RabbitMQ快速入门
阅读量:6009 次
发布时间:2019-06-20

本文共 3238 字,大约阅读时间需要 10 分钟。

RabbitMQ是一种消息中间件,它接收和转发消息,可以理解为邮局。只是RabbitMQ接收,处理,转发的是二进制的数据,邮局处理的一般为纸。

基本概念

  • Producer(生产者): 发送消息的程序
  • Consumer(消费者):接收消息的程序
  • Queue(队列):像邮局的信箱,在RabbitMQ内部,同一个消息流只能存在一个Queue中,队列只受主机内存,磁盘的大小限制。 生产者像Queue中发送消息,消费者从Queue中取出消息

安装

  1. Mac OS
brew install rabbitmq
  1. CentOS7
cat << EOF > /etc/yum.repos.d/rabbit.repo[rabbitmq-erlang]name=rabbitmq-erlangbaseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/21/el/7gpgcheck=1gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.ascrepo_gpgcheck=0enabled=1EOFyum install rabbitmq-server

Hello World

  1. 启动RabbitMQ
rabbitmq-server
  1. 添加Java依赖库
ch.qos.logback
logback-classic
1.2.3
com.rabbitmq
amqp-client
4.2.0
  1. 编写生产者
/** * @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)

  • queue 要声明的队列名称
  • durable 是否长久保存,true的话,服务器重启的时候,queue仍然存在
  • exclusive 是否声明一个排他的队列, 也就是只有当前的channel才能监听这个queue
  • autoDelete 当服务器不在使用这个queue的时候,自动删除它
  • arguments 其它的属性

生产和消费消息都是通过channel的。channel指定具体为那个queue

  1. 编写消费者
/** * @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);    }}
  1. 运行

生产者

img_7b353076a1d29fb1915b24d985d5a8bf.png
image.png

消费者

img_7071c1dce3d5a0f4a347fe8aba5d45f5.png
image.png

额外

  1. 我们可以安装rabbitMQ的图形管理界面
// 查看有哪些插件rabbitmq-plugins list// 启用管理界面rabbitmq-plugins enable rabbitmq_management
  1. 进入管理界面

    进入地址:http://127.0.0.1:15672/
    账号和密码:guest guest

    img_02ad14cb544dda4feb8fff9487fca31e.png
    image.png
img_16ed7faaa36d9a37598d3eca9e3b27b8.png
image.png

这些参数大部分都是可以从rabbitmqctl命令获得的。

最后

学习下消息中间件

参考

转载地址:http://axpmx.baihongyu.com/

你可能感兴趣的文章
2.4 salt grains与pillar jinja的模板
查看>>
MySQL主从(介绍,配置主机,配置从机,测试主从同步)
查看>>
不同版本的outlook客户端配置Office 365 exchange online帐户需要安装的补丁
查看>>
Java服务器-resin
查看>>
Linux下搭建JDK和TOMCAT环境
查看>>
关闭windows休眠
查看>>
Ansible之十一:变量详解
查看>>
那些SCOM 管理包开发中遇到的坑1–Powershell scriptBlock Invoke执行结果的类型
查看>>
关于Server Sql 2008触发器的使用
查看>>
mac常见命令
查看>>
Redhat 系统相关调优参数注解
查看>>
nextus的使用
查看>>
Python自动化开发学习5-2-subprocess模块
查看>>
编程实现最小化窗口到桌面右下角图标的代码
查看>>
ELK stack实战之结合rsyslog分析系统日志(auth.log)
查看>>
网络管理工具与IT运维管理平台的差别
查看>>
五一期间安全回顾 木马威胁提升 移动设备数据泄漏受重视
查看>>
VDI序曲二十 桌面虚拟化和RemoteApp集成到SharePoint 2010里
查看>>
oracle里long类型的总结
查看>>
10种有用的CSS技巧
查看>>