RabbitMQ

rabbitmq网络请求分析

倾然丶 夕夏残阳落幕 提交于 2020-02-18 21:32:05
amqp协议是用长连接,每次发送数据包,可以包含多个帧。每个帧包含帧类型、通道、长度,及每种类型所需要的特定数据。帧类型包括:方法、请求头、请求体等。 1、先做tcp三次握手 2、连接。client发送amqp协议版本,0.9.1,这个包有点特殊,不是正常的帧结构。 然后,server响应Connection.Start消息。client响应Connection.Start-Ok,包含用户名/密码信息,连接建立。这个过程中,会互相发送彼此的环境等数据。 server端发送数据: capabilities F publisher_confirms t 1 exchange_exchange_bindings t 1 basic.nack t 1 consumer_cancel_notify t 1 connection.blocked t 1 consumer_priorities t 1 authentication_failure_close t 1 per_consumer_qos t 1 direct_reply_to t 1 cluster_name S rabbit@DESKTOP-I4HSGR5 copyright S .Copyright (c) 2007-2019 Pivotal Software, Inc.informationS9Licensed under

multiple Rabbitmq queues with spring boot

陌路散爱 提交于 2020-02-18 10:25:38
问题 From spring boot tutorial: https://spring.io/guides/gs/messaging-rabbitmq/ They give an example of creating 1 queue and 1 queue only, but, what if I want to be able to create more then 1 queue? how would it be possible? Obviously, I can't just create the same bean twice: @Bean Queue queue() { return new Queue(queueNameAAA, false); } @Bean Queue queue() { return new Queue(queueNameBBB, false); } You can't create the same bean twice, it will make ambiguous. 回答1: Give the bean definition factory

multiple Rabbitmq queues with spring boot

不羁岁月 提交于 2020-02-18 10:22:40
问题 From spring boot tutorial: https://spring.io/guides/gs/messaging-rabbitmq/ They give an example of creating 1 queue and 1 queue only, but, what if I want to be able to create more then 1 queue? how would it be possible? Obviously, I can't just create the same bean twice: @Bean Queue queue() { return new Queue(queueNameAAA, false); } @Bean Queue queue() { return new Queue(queueNameBBB, false); } You can't create the same bean twice, it will make ambiguous. 回答1: Give the bean definition factory

RabbitMQ

本小妞迷上赌 提交于 2020-02-17 02:39:00
RabbitMQ的安装 注意:需要匹配elang 和rabbitmq-server的版本,版本不对会有问题 # Erlang安装 sudo apt install erlang erlang - nox # 安装rabbitmq服务器 sudo apt install rabbitmq - server # 启动、停止、重启rabbitmq服务 service rabbitmq - server start / stop / restart # 创建普通用户 sudo rabbitmqctl add_user your_username your_password # 设置用户为管理员 sudo rabbitmqctl set_user_tags your_username administrator # 用户添加管理权限 rabbitmqctl set_permissions - p / python ".*" ".*" ".*" # 查看状态 sudo rabbitmqctl status # 查看队列 sudo rabbitmqctl list_queues 消息确认机制 处理完消息后会有一个回执,避免中途挂掉 消息调度 循环调度,你一个任务我一个任务,没做完就等着(默认) auto_ack=True ch.basic_ack(delivery_tag=method

Centos 8 安装Rabbit-MQ

[亡魂溺海] 提交于 2020-02-16 00:45:20
参考文档: https://www.rabbitmq.com/install-rpm.htm 1. 首先需要安装ErLang # dnf install -y wget epel-release # wget https://github.com/rabbitmq/erlang-rpm/releases/download/v21.3.8.6/erlang-21.3.8.6-1.el7.x86_64.rpm # dnf install -y erlang-21.3.8.6-1.el7.x86_64.rpm 2. 添加RabbitMQ仓库 # vim /etc/yum.repos.d/rabbitmq.repo [bintray-rabbitmq-server] name=bintray-rabbitmq-rpm baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.8.x/el/8/ gpgcheck=0 repo_gpgcheck=0 enabled=1 3. 安装RabbitMQ Server # rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key

RabbitMQ交换机

北慕城南 提交于 2020-02-14 23:15:24
1、交换机属性 交换机有以下属性: Name :交换机名称 Type :交换机类型 direct、topic、fanout、headers Durability :是否需要持久化,true为持久化 Auto Delete :当最后一个绑定到Exchange上的队列删除后,自动删除该Exchange Internal :当前Exchange是否用于RabbitMQ内部使用,默认为False Arguments :扩展参数,用于扩展AMQP协议,定制化使用 2、直连交换机Direct Exchange(完全匹配路由key) 所有发送到Direct Exchange的消息会被转发到RouteKey中指定的Queue 注意:Direct模式可以使用RabbitMQ自带的Exchange:default Exchange,所以不需要将Exchange进行任何绑定(binding)操作,消息传递时,RouteKey必须完全匹配才会被队列接收,否则该消息会被抛弃; 消费端代码: package com.ue.exchange.direct; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import

Windows环境下RabbitMQ的启动和停止命令

人走茶凉 提交于 2020-02-14 20:18:33
Windows环境下RabbitMQ的启动和停止命令 原创lockie_zou 最后发布于2018-05-24 15:34:21 阅读数 36514 收藏 展开 首先windows下安装好了erlang和rabbitmq。 如下地址同时下载和安装: Erlang:http://www.erlang.org/download.html RabbitMQ :http://www.rabbitmq.com/download.html 安装RabbitMQ时注意如下图: RabbitMQ Service默认是自动勾选中的,这里我们取消勾选。如选中启动RabbitMQ服务时会报如下图错误: 安装完成后,Erlang和RabbitMQ环境变量是没有配置的,需要自己手动去配置,如下图: 变量名分别为:ERLANG_HOME 、RABBITMQ_SERVER;同时把变量为配置在path环境变量中即可。 可视化界面启动 运行命令行窗口cmd 输入命令rabbitmq-plugins enable rabbitmq_management,这样就可以添加可视化插件了。 这样就添加了rabbitmq界面,只要启动rabbitmq,然后在浏览器输入 http://127.0.0.1:15672/ 就可以访问了 rabbitmq启动方式有2种 1、以应用方式启动 rabbitmq-server

Windows环境下RabbitMQ的启动和停止命令

帅比萌擦擦* 提交于 2020-02-14 17:56:37
Windows环境下RabbitMQ的启动和停止命令 原创lockie_zou 最后发布于2018-05-24 15:34:21 阅读数 36514 收藏 展开 首先windows下安装好了erlang和rabbitmq。 如下地址同时下载和安装: Erlang:http://www.erlang.org/download.html RabbitMQ :http://www.rabbitmq.com/download.html 安装RabbitMQ时注意如下图: RabbitMQ Service默认是自动勾选中的,这里我们取消勾选。如选中启动RabbitMQ服务时会报如下图错误: 安装完成后,Erlang和RabbitMQ环境变量是没有配置的,需要自己手动去配置,如下图: 变量名分别为:ERLANG_HOME 、RABBITMQ_SERVER;同时把变量为配置在path环境变量中即可。 可视化界面启动 运行命令行窗口cmd 输入命令rabbitmq-plugins enable rabbitmq_management,这样就可以添加可视化插件了。 这样就添加了rabbitmq界面,只要启动rabbitmq,然后在浏览器输入 http://127.0.0.1:15672/ 就可以访问了 rabbitmq启动方式有2种 1、以应用方式启动 rabbitmq-server

Java教程之RabbitMQ介绍

懵懂的女人 提交于 2020-02-14 16:05:46
前言   RabbitMQ是基于AMQP协议(Advanced Message Queue Protocol)的消息中间件。    什么是消息队列   消息队列属于进程间通信的一种方式,使用消息队列可以通过异步方式处理数据,借此可以提高系统性能。我们可以把消息当作存放数据的容器,消息的消费者可以从队列中获取数据,进行处理。常见的消息队列有:ActiveMQ,RabbitMQ,Kafka,RocketMQ等。    RabbitMQ中用到基本概念   Broker:消息队列的服务器实体。   Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。   Queue:消息队列载体,每个消息都会被投入到一个或多个队列。   Binding:绑定,它主要是把exchange和queue按照路由规则绑定起来。   Routing Key:路由关键字,exchange根据这个关键字进行消息投递。   vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。   producer:消息生产者,投递消息的程序。   consumer:消息消费者,接收消息的程序。   channel:消息通道,在客户端的每个连接里,可以建立多个channel,每个channel代表一个会话任务。    RabbitMQ中消息模式    1、简单队列  

windows安装ActiveMQ以及点对点以及发布订阅

♀尐吖头ヾ 提交于 2020-02-13 20:40:35
一、MQ产品的分类 1、RabbitMQ   是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量级,更适合于企业级的开发。同时实现了一个经纪人(Broker)构架,这意味着消息在发送给客户端时先在中心队列排队。对路由(Routing),负载均衡(Load balance)或者数据持久化都有很好的支持。 2、Redis   是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用。对于RabbitMQ和Redis的入队和出队操作,各执行100万次,每10万次记录一次执行时间。测试数据分为128Bytes、512Bytes、1K和10K四个不同大小的数据。实验表明:入队时,当数据比较小时Redis的性能要高于RabbitMQ,而如果数据大小超过了10K,Redis则慢的无法忍受;出队时,无论数据大小,Redis都表现出非常好的性能,而RabbitMQ的出队性能则远低于Redis。 入队 出队 128B 512B 1K 10K 128B 512B 1K 10K Redis 16088 15961 17094 25 15955 20449 18098 9355 RabbitMQ 10627