RabbitMQ

Linux下部署RabbitMQ详细教程

百般思念 提交于 2020-04-01 03:20:34
本教程安装的版本号如下 下载地址 链接:https://pan.baidu.com/s/1yMFQ-any_lmXvOJWBi1MIw 提取码:oher 复制这段内容后打开百度网盘手机App,操作更方便哦 其他版本可以到官网上进行对应的下载 https://www.rabbitmq.com/ ※※特别注意 ※※ 1.安装rabbitmq之前需要安装erlang,并且两者需要对应的版本, 参考官网 https://www.rabbitmq.com/which-erlang.html 2.在安装之前,一定要关闭防火墙,否则后续将无法登录管控台 查看防火墙状态 关闭防火墙 到此,防火墙已经关闭完成 在software下上传安装包 安装erlang rabbitmq-server需要socat依赖 socat需要tcp_wrappers依赖 安装tcp_wrappers 安装socat 安装rabbitmq-server 修改配置文件 vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app loopback_users 中的 <<"guest">>,只保留guest 启动rabbitmq-server服务 rabbitmq-server start & 其中&表示在后台启动 安装lsof 5672为通信端口号

RabbitMQ消息模式2

半腔热情 提交于 2020-03-31 22:48:06
1、消费端限流 2、消息的ACK与重回队列 3、TTL消息 4、死信队列 消费端限流 什么是消费端的限流? 假设一个场景,首先,我们RabbitMQ服务器有上万条未处理的消息,我们随便打开一个消费者客户端,会出现下面情况: 巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么多数据! 消费端限流 RabbitMQ提供的解决方案 RabbitMQ提供了一种qos(服务质量保证)功能,即在非自动确认消息的前提下,如果一定数目的消息(通过基于Consumer或者Channel设置Qos的值)未被确认前,不进行消费新的消息 Void BasicQos(uint prefetchSize, ushort prefetchCount, bool global); prefetchSize:0 不限制消息大小 prefetchSize:会告诉RabbitMQ不要同时给一个消费者推送多于N个消息,即一旦有N个消息还没有ack,则该Consumer将block(阻塞)掉,直到有消息ack Global:true\false是否将上面设置应用于Channel;简单来说,就是上面限制是Channel级别的还是Consumer级别 注意: prefetchSize和global这两项,RabbitMQ没有实现,暂且不研究; prefetch_count在no_ask=false的情况下生效

五分钟学后端技术:如何学习Java工程师必须要会的RPC

╄→尐↘猪︶ㄣ 提交于 2020-03-30 23:01:00
声明 本文转自https://developer.51cto.com/art/201906/597963.htm 什么是RPC RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。 RPC 是一种技术思想而非一种规范或协议,常见 RPC 技术和框架有: 应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring Boot/Spring Cloud。 远程通信协议:RMI、Socket、SOAP(HTTP XML)、REST(HTTP JSON)。 通信框架:MINA 和 Netty。 目前流行的开源 RPC 框架还是比较多的,有阿里巴巴的 Dubbo、Facebook 的 Thrift、Google 的 gRPC、Twitter 的 Finagle 等。 常用的RPC框架 gRPC:是 Google 公布的开源软件,基于最新的 HTTP 2.0 协议,并支持常见的众多编程语言。RPC 框架是基于 HTTP 协议实现的,底层使用到了 Netty 框架的支持。 Thrift:是 Facebook 的开源 RPC 框架,主要是一个跨语言的服务开发框架。 用户只要在其之上进行二次开发就行,应用对于底层的 RPC 通讯等都是透明的

php7.1 安装amqp扩展

我们两清 提交于 2020-03-30 20:53:55
在php开发中使用rabbitmq消息队列时,需要安装PHP扩展amqp,安装步骤如下: 直接使用pecl进行amqp扩展的安装, /usr/local/php/bin/pecl install amqp 如果缺少librabbitmq库文件,需要先安装librabbitmq,步骤如下: 1 wget https://github.com/alanxz/rabbitmq-c/releases/download/v0.7.1/rabbitmq-c-0.7.1.tar.gz 2 tar -zxvf rabbitmq-c-0.7.1.tar.gz 3 cd rabbitmq-c-0.7.1 4 ./configure --prefix=/usr/local/rabbitmq-c 5 make && make install librabbitmq安装完成后,继续执行 /usr/local/php/bin/pecl install amqp 此时需要输入安装librabbitmq的安装目录/usr/local/rabbitmq-c,此时得到amqp.so扩展模块路径/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/amqp.so,加入php.ini配置文件, [amqp] extension=/usr/local/php

Spring Boot整合RabbitMQ

二次信任 提交于 2020-03-30 04:42:42
1.引入pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> 2.application.yml配置 spring: rabbitmq: host: 127.0.0.1 port: 5672 username: admin password: admin publisher-confirms: true publisher-returns: true template: mandatory: true listener: concurrency: 2 #最小消息监听线程数 max-concurrency: 2 #最大消息监听线程数 3.创建MQ配置文件 import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.DirectExchange; import org.springframework.amqp

秒杀

主宰稳场 提交于 2020-03-27 17:08:58
3 月,跳不动了?>>> 设计思路: 1.商品入库 2.把商品的ID存进redis中 3.当秒杀开始,用户的请求到达的时候,先判断这个商品是否已经被秒杀,如果被秒杀返回,秒杀失败。如果存在,判断,库存大于本次购买量:扣减redis中的库存、并且将订单信息推送到MQ;库存小于本次购买量:直接返回、数量不足。进入rabbitmq队列。并在redis中把商品的ID(预处理)移除。 4.队列去处理订单,更新数据库库存(乐观锁),生成订单信息。异步通知用户购买结果。 5.客户预秒杀的商品如果没有付款成功,则重新把数据库中的商品信息存在redis中。 6,如果使用分布式,则要把用户的信息进行session共享(放入redis中)。 来源: oschina 链接: https://my.oschina.net/u/4167465/blog/3212535

消息总线SpringCloudBus

[亡魂溺海] 提交于 2020-03-26 13:16:48
在不重启微服务的情况 下更新配置如何来实现呢? 我们使用SpringCloudBus来实现配置的自动更新。 引入依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring‐cloud‐bus</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring‐cloud‐stream‐binder‐rabbit</artifactId> </dependency> 配置文件 rabbitmq: host: 127.0.0.1 management: #暴露触发消息总线的地址 endpoints: web: exposure: include: bus‐refresh 客户端 引入依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring‐cloud‐bus</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId

.NET Where to start a RabbitMQ Client connection in a web application

别来无恙 提交于 2020-03-25 17:52:26
问题 I'm implementing a RabbitMQ client bus class in a .NET Framework web application. The class is pretty basic like so: public class RabbitConnection { private readonly IConnection conn; public RabbitConnection() { try { var factory = new ConnectionFactory() {...} this.conn = factory.CreateConnection(); } catch { ... } } public void Publish<T>(T @event) where T : class { using (var channel = conn.CreateModel()) { ... } } ... } I have read that starting and closing connections with RabbitMQ is

Java 异步处理 RabbitMQ

六眼飞鱼酱① 提交于 2020-03-25 15:52:42
3 月,跳不动了?>>> 很多开发人员说,将应用程序切换到异步处理很复杂。因为他们有一个天然需要同步通信的Web应用程序。在这篇文章中,我想介绍一种方法来达到异步通信的目的:使用一些众所周知的库和工具来设计他们的系统。 下面的例子是用Java编写的,但我相信它更多的是基本原理,同一个应用程序可以用任何语言来重新写。 所需的工具和库: Spring Boot RabbitMQ 1.Web应用程序 一个用Spring MVC编写的Web应用程序并运行在Tomcat上。 它所做的只是将一个字符串发送到一个队列中 (异步通信的开始) 并等待另一个队列中的消息作为HTTP响应发送回来。 首先,我们需要定义几个依赖项,然后等待Spring Boot执行所有必要的自动配置。 < dependencies > < dependency > < groupId > org . springframework . boot </ groupId > < artifactId > spring - boot - starter - web </ artifactId > </ dependency > < dependency > < groupId > org . springframework . boot </ groupId > < artifactId > spring - boot -

SpringBoot + RabbitMQ ,保证消息100% 投递成功并被消费(附源码)

泪湿孤枕 提交于 2020-03-25 15:48:51
3 月,跳不动了?>>> 一、先扔一张图 说明: 本文涵盖了关于RabbitMQ很多方面的知识点, 如: 消息发送确认机制 消费确认机制 消息的重新投递 消费幂等性, 等等 这些都是围绕上面那张整体流程图展开的, 所以有必要先贴出来, 见图知意 二、实现思路 简略介绍163邮箱授权码的获取 编写发送邮件工具类 编写RabbitMQ配置文件 生产者发起调用 消费者发送邮件 定时任务定时拉取投递失败的消息, 重新投递 各种异常情况的测试验证 拓展: 使用动态代理实现消费端幂等性验证和消息确认(ack) 三、项目介绍 springboot版本2.1.5.RELEASE, 旧版本可能有些配置属性不能使用, 需要以代码形式进行配置 RabbitMQ版本3.7.15 MailUtil: 发送邮件工具类 RabbitConfig: rabbitmq相关配置 TestServiceImpl: 生产者, 发送消息 MailConsumer: 消费者, 消费消息, 发送邮件 ResendMsg: 定时任务, 重新投递发送失败的消息 说明: 上面是核心代码, MsgLogService mapper xml等均未贴出, 完整代码可以参考GitHub上的源码,地址在文末。 四、代码实现 1、163邮箱授权码的获取, 如图: 该授权码就是配置文件spring.mail.password需要的密码 2、pom