消息队列

RabbitMQ消息分发简单介绍

浪子不回头ぞ 提交于 2020-01-25 13:49:35
通过前面介绍过activemq的文章的时候我们了解到activemq有queue和topic的具体实现,但是在rabbitmq中只有queue的具体实现,是没有具体topic这种说法的,但是虽然没有提供topic的概念,但是却通过交换器exchange、路由routingkey等进行了交换实现,下面我们就来介绍下在rabbitmq中生产者是如何把消息发送到队列中的。 在介绍消息传递之前我们还得介绍下下面的几个概念: vhost:在前面的一篇文章 《RabbitMQ的配置文件说明》 中提到过一个关于vhost的默认配置为default_vhost = /,它代表一个mini的rabbitmq虚拟主机,除了与其他rabbitmq虚拟主机共享相同的身份认证和加密环境外,它拥有自己独立的queue,exchange,routingkey,binding及权限机制,它可以通过命令行rabbitmqctl add_vhost qa1和在管理界面添加 channel:通道,是由connection创建的,而connection又是通过ConnectionFactory创建的,在channel中我们可以定义queue、exchange、queuebind、消息发布、消息消费等操作。 routingkey:路由key,用来路由消息到queue

资料搜集-JAVA系统的梳理知识14-Kafka

梦想的初衷 提交于 2020-01-25 07:34:19
> 本文由 JavaGuide 读者推荐,JavaGuide 对文章进行了整理排版!原文地址:https://www.wmyskxz.com/2019/07/17/kafka-ru-men-jiu-zhe-yi-pian/ , 作者:我没有三颗心脏。 # 一、Kafka 简介 ------ ## Kafka 创建背景 **Kafka** 是一个消息系统,原本开发自 LinkedIn,用作 LinkedIn 的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。现在它已被[多家不同类型的公司](https://cwiki.apache.org/confluence/display/KAFKA/Powered+By) 作为多种类型的数据管道和消息系统使用。 **活动流数据**是几乎所有站点在对其网站使用情况做报表时都要用到的数据中最常规的部分。活动数据包括页面访问量(Page View)、被查看内容方面的信息以及搜索情况等内容。这种数据通常的处理方式是先把各种活动以日志的形式写入某种文件,然后周期性地对这些文件进行统计分析。**运营数据**指的是服务器的性能数据(CPU、IO 使用率、请求时间、服务日志等等数据)。运营数据的统计方法种类繁多。 近年来,活动和运营数据处理已经成为了网站软件产品特性中一个至关重要的组成部分

rabbitmq学习

纵然是瞬间 提交于 2020-01-25 05:27:57
创建rabbitMQ的连接 public class ConnectionUtil { public static Connection getConnection ( ) throws IOException , TimeoutException { ConnectionFactory connectionFactory = new ConnectionFactory ( ) ; //设置服务器地址 connectionFactory . setHost ( "127.0.0.1" ) ; //设置端口 connectionFactory . setPort ( 5672 ) ; //设置vHost 就相当于mysql的数据库名 connectionFactory . setVirtualHost ( "/vhost_admin" ) ; //设置用户名 connectionFactory . setUsername ( "admin" ) ; connectionFactory . setPassword ( "admin" ) ; return connectionFactory . newConnection ( ) ; } } 简单队列 生产者 public class Send { public static final String QUEUE_NAME =

redis各数据类型使用场景

十年热恋 提交于 2020-01-25 02:50:09
String:1 存储session token, 2 计数器 3 缓存功能 hash:存储map list:1 实现分页 2 微博下拉刷新 3 微博粉丝数 4 博客发布文章数 5 消息队列 set:去重 zset:带权重的set 有一个score记录权重,可以实现排行榜 热点数据 Bitmap 布隆表达式 Pipeline 管道 多次请求一次发送 pub/sub 队列 来源: CSDN 作者: 鲍春霖 链接: https://blog.csdn.net/qq_20143059/article/details/103117536

Springboot 1.5.x 集成基于Centos7的RabbitMQ集群安装及配置

六月ゝ 毕业季﹏ 提交于 2020-01-25 01:19:27
RabbitMQ简介 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。 RabbitMQ是一套开源(MPL)的消息队列服务软件,是由LShift提供的一个Advanced Message Queuing Protocol(AMQP)的开源实现,由以高性能、健壮以及可伸缩性出名的Erlang写成。 选择RabbitMQ 市面上有很多MQ可以选择,如:ActiveMQ、ZeroMQ、Apache Qpid及RocketMQ,为什么要选择RabbitMQ呢? 1. 除了Qpid,RabbitMQ是唯一一个实现了AMQP标准的消息服务器; 2. 可靠性,RabbitMQ的持久化支持,保证了消息的稳定性; 3. 高并发,RabbitMQ使用了Erlang开发语言,Erlang是为电话交换机开发的语言,天生自带高并发光环和高可用特性; 4. 集群部署简单,正是应为Erlang使得RabbitMQ集群部署变的超级简单; 5. 社区活跃度高,从网上资料来看,RabbitMQ也是首选 工作机制 1. 消息模型 生产者、消费者和代理 生产者(producer):消息的创建者,负责创建和推送数据到消息服务器; 消费者(consumer):消息的接收方,用于处理数据和确认消息; 代理(proxy):就是RabbitMQ本身,用于扮演“快递”的角色

kafka参数设置

Deadly 提交于 2020-01-25 00:52:41
############################# System ############################# #唯一标识在集群中的ID,要求是正数。 broker .id = 0 #服务端口,默认9092 port = 9092 #监听地址,不设为所有地址 host .name = debugo01 # 处理网络请求的最大线程数 num .network .threads = 2 # 处理磁盘I/O的线程数 num .io .threads = 8 # 一些后台线程数 background .threads = 4 # 等待IO线程处理的请求队列最大数 queued .max .requests = 500 # socket的发送缓冲区(SO_SNDBUF) socket .send .buffer .bytes = 1048576 # socket的接收缓冲区 (SO_RCVBUF) socket .receive .buffer .bytes = 1048576 # socket请求的最大字节数。为了防止内存溢出,message.max.bytes必然要小于 socket .request .max .bytes = 104857600 ############################# Topic #######################

Kafka参数配置详解

一世执手 提交于 2020-01-25 00:51:03
配置参数   参数说明 broker.id =1 每一个broker在集群中的唯一标示,要求是正数。当该服务器的 IP地址发生改变时,如果broker.id没有变化,则不会影响consumer s的消息情况 log.dirs=/log/kafka-logs kafka数据的存放地址,多个地址的话用逗号分割/log/kafkalogs-1,/log/kafka-logs-2 port =9092 broker server服务端口 message.max.bytes =6525000 表示消息体的最大大小,单位是字节 num.network.threads =4 broker处理消息的最大线程数,一般情况下不需要去修改 background.threads =4 一些后台任务处理的线程数,例如过期消息文件的删除等,一般 情况下不需要去做修改 queued.max.requests =500 等待IO线程处理的请求队列最大数,若是等待IO的请求超过这个 数值,那么会停止接受外部消息,是一种自我保护机制 host.name broker的主机地址,若是设置了,那么会绑定到这个地址上,若 是没有,会绑定到所有的接口上,并将其中之一发送到ZK,一般 不设置 socket.send.buffer.bytes=100*1024 socket的发送缓冲区,socket的调优参数SO_SNDBUFF

windows环境安装RabbitMQ服务启动自动停止问题解决

◇◆丶佛笑我妖孽 提交于 2020-01-24 23:45:08
最近项目用到了消息队列,选择了比较常用的RabbitMQ,在安装时遇到了RabbitMQ服务启动自动停止问题,在百度之后,逐步排查问题: 1、RabbitMQ的开发环境Erlang安装,配置Erlang的环境变量没问题 2、RabbitMQ的安装和环境变量配置没问题 3、计算机名称没有中文,没有修改,而且长度并不长 以上三个都排查后还是自动停止,猜测应该是版本问题,就官网找了版本对应 地址: https://www.rabbitmq.com/which-erlang.html#compatibility-matrix 由于我RabbitMQ使用的是最新的3.8.2,但是Erlang22.1下载不下来,就从别处下载了个20.0.1,导致版本对应不上,重新下载了RabbitMQ3.7.7,卸载3.8.2安装3.7.7,启动成功,可以访问 http://localhost:15672 3.7.7下载地址: https://download.csdn.net/download/qukaiwei/12092206 3.8.2下载地址: https://download.csdn.net/download/qukaiwei/12091895 来源: CSDN 作者: 代码催人老 链接: https://blog.csdn.net/qukaiwei/article/details

Kafka server.properties 详细配置总结

孤者浪人 提交于 2020-01-24 16:32:18
技术博客: https://github.com/yongxinz/tech-blog 同时,也欢迎关注我的微信公众号 AlwaysBeta ,更多精彩内容等你来。 如下为详细的 server.properties 参数配置,可根据真实业务场景来选择需要使用。 ############################# System ############################# #唯一标识在集群中的ID,要求是正数。 broker . id = 0 #服务端口,默认9092 port = 9092 #监听地址,不设为所有地址 host . name = debugo01 # 处理网络请求的最大线程数 num . network . threads = 2 # 处理磁盘I/O的线程数 num . io . threads = 8 # 一些后台线程数 background . threads = 4 # 等待IO线程处理的请求队列最大数 queued . max . requests = 500 # socket的发送缓冲区(SO_SNDBUF) socket . send . buffer . bytes = 1048576 # socket的接收缓冲区 (SO_RCVBUF) socket . receive . buffer . bytes = 1048576 #

4.Springboot2.x集成 RabbitMQ的几种常见用法

北战南征 提交于 2020-01-24 11:17:05
Spring Boot 集成 RabbitMQ的几种常见用法 前言 Spring Boot 集成 RabbitMQ 非常简单,如果只是简单的使用配置非常少,Spring Boot 提供了 spring-boot-starter-amqp 项目对消息各种支持。 引入依赖 compile group: 'org.springframework.boot', name: 'spring-boot-starter-amqp' 添加配置文件yml server : port : 8001 spring : application : name : zoo - plus - rabbitmq rabbitmq : virtual-host : / host : localhost port : 5672 username : guest password : guest 直接通过队列(单生-单消) 我们需要先配置队列 /** * @author: 谢飞 */ @Configuration public class RabbitConfig { @Bean public Queue helloQueue ( ) { return new Queue ( "hello-queue" ) ; // return QueueBuilder.durable("hello-queue").build();