amqp

How to set connection friendly name

情到浓时终转凉″ 提交于 2020-06-17 12:56:31
问题 I have used http://github.com/streadway/amqp package in my application in order to handle connections to a remote RabbitMQ server. Everything is ok and works fine but I have a question? The current name for a connection is "ip:port" , but can become better when you have your chosen name from the same ip. Is there any way to set my friendly name? 回答1: RabbitMQ 3.6.5 added the facility for the connecting client to report a friendly name string value to identify a connection for management

How to set connection friendly name

别来无恙 提交于 2020-06-17 12:56:28
问题 I have used http://github.com/streadway/amqp package in my application in order to handle connections to a remote RabbitMQ server. Everything is ok and works fine but I have a question? The current name for a connection is "ip:port" , but can become better when you have your chosen name from the same ip. Is there any way to set my friendly name? 回答1: RabbitMQ 3.6.5 added the facility for the connecting client to report a friendly name string value to identify a connection for management

HAProxy closes long living TCP connections ignoring TCP keepalive

試著忘記壹切 提交于 2020-06-10 13:46:22
问题 I have configured HAProxy (1.5.4, but I tried also 1.5.14) to balance in TCP mode two server exposing AMQP protocol (WSO2 Message Broker) on 5672 port. The clients create and use permanent connection to the AMQP Servers, via HAProxy. I've changed the client and server TCP keepalive timeout, setting net.ipv4.tcp_keepalive_time=120 (CentOS 7). In HAProxy I've setted timeout client/server to 200 seconds (>120 seconds of the keepalive packets) and used the option clitcpka. Then I've started

java RabbitMQ面试题附pdf答案(最全版本持续更新)

放肆的年华 提交于 2020-05-09 20:26:25
前言 涵盖各大公司会问到的面试点,同时随着版本的升级,可能也会有一些面试题更新,也会同步保持更新,因为篇幅原因(其实是我懒,哈哈)所以列了一部分答案,所有的答案见下文,总共485页合计20个技术点,文末自取pdf. 1、什么是 rabbitmq 采用 AMQP 高级消息队列协议的一种消息队列技术,最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦. 2、为什么要使用 rabbitmq 1、在分布式系统下具备异步,削峰,负载均衡等一系列高级功能; 2、拥有持久化的机制,进程消息,队列中的信息也可以保存下来。 3、实现消费者和生产者之间的解耦。 4、对于高并发场景下,利用消息队列可以使得同步访问变为串行访问达到一定量的限流,利于数据库的操作。 5.可以使用消息队列达到异步下单的效果,排队中,后台进行逻辑下单。 3、使用 rabbitmq 的场景 1、服务间异步通信 2、顺序消费 3、定时任务 4、请求削峰 4、如何确保消息正确地发送至 RabbitMQ? 如何确保消息接. 收方消费了消息? 发送方确认模式 将信道设置成 confirm 模式(发送方确认模式),则所有在信道上发布的消息都会被指派一个唯一的 ID。一旦消息被投递到目的队列后,或者消息被写入磁盘后(可持久化的消息),信道会发送一个确认给生产者(包含消息唯一 ID)。 如果 RabbitMQ

SpringBoot进阶教程(五十)集成RabbitMQ---MQ实战演练

ε祈祈猫儿з 提交于 2020-05-08 21:07:07
RabbitMQ是一个在 AMQP 基础上完成的,可复用的企业消息系统。他遵循Mozilla Public License 开源协议 。RabbitMQ是流行的开源消息队列系统,用erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。 消息中间件的工作过程可以用生产者消费者模型来表示.即,生产者不断的向消息队列发送信息,而消费者从消息队列中消费信息. 如果你还没有安装rabbitmq的,可以看看这篇 《centos安装MQ》 不说了不说了,来一张图直截了当的看看MQ工作的具体过程: 开局一张图 故事全靠编.从上图可看出,对于消息队列来说,生产者,消息队列,消费者是最重要的三个概念,生产者发消息到消息队列中去,消费者监听指定的消息队列,并且当消息队列收到消息之后,接收消息队列传来的消息,并且给予相应的处理.消息队列常用于分布式系统之间互相信息的传递. v 基础概念 对于RabbitMQ来说,除了这三个基本模块以外,还添加了一个模块,即交换机(Exchange).它使得生产者和消息队列之间产生了隔离,生产者将消息发送给交换机,而交换机则根据调度策略把相应的消息转发给对应的消息队列.那么RabitMQ的工作流程如下所示: 关于rabbitmq几个基础名词的介绍: Broker: 简单来说就是消息队列服务器实体。 Exchange: 消息交换机

spring boot rabbitMQ 的 hello world

前提是你 提交于 2020-05-08 03:09:39
  今天公司有一个需求,是实现多个服务器中的运维信息的集中管理。由于需要实现运维信息的收集不影响各服务器上服务的开销,并且能快速开发,所以选择了消息队列这种技术方式。 消息队列有一个好处,是可以将消息异步传递,不对主服务造成开销,运维信息,是可以异步的在运维服务器中处理,并不影响到主服务。 现在java中,使用spring boot开发,方便高效,所以,选择了spring boot支持的rabbit MQ。 搞开发,学技术,最好的方式是从最简单的例子出发,就是常说的hello world,所以有了以下实现最简单例子的笔记. 一,安装 rabbitMQ 服务   由于rabbitMQ需要Erlang的虑拟机,所以需要先安装Erlang,安装完Erlang,再安装rabbitMQ 服务,两个服务都是安装在windows server 2106上面 二,开始进行编码 打开start.spring.io, 新建一个hello world 项目   2. 将项目导入 Eclipse,以下是代码结构      3. RabbitAmqpTutorialsApplication.java package org.springframework.amqp; import org.springframework.boot.CommandLineRunner; import org

golang连接rabbitmq

蓝咒 提交于 2020-05-06 09:12:07
1.docke 中安装 rabbitmq   docker pull rabbitmq 2.运行 rabbitmq   docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:latest 3.下载 rabbitmq golang 客户端   go get github.com/streadway/amqp 4.send.go 1 package main 2 3 import ( 4 " log " 5 6 " github.com/streadway/amqp " 7 ) 8 9 func failOnError(err error, msg string ) { 10 if err != nil { 11 log.Fatalf( " %s: %s " , msg, err) 12 } 13 } 14 15 // 只能在安装 rabbitmq 的服务器上操作 16 func main() { 17 conn, err := amqp.Dial( " amqp://guest:guest@localhost:5672/ " ) 18 failOnError(err, " Failed to

消息队列之rabbitmq学习使用

旧时模样 提交于 2020-05-02 01:23:44
消息队列之rabbitmq学习使用 1、RabbitMQ简介 1.1、什么是RabbitMQ? RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于 AMQP协议的。 1.2、RabbitMQ有哪些特点? 目前大多数互联网都在使用RabbitMQ RabbitMQ底层采用Erlang语言进行编写 开源、性能优秀,稳定 与SpringAMQP完美的整合、API丰富,只要是你能想到的编程语言几乎都有与其相适配的RabbitMQ客户端。 集群模式丰富,表达式配置,HA模式,镜像队列模型 保证数据不丢失的前提做到高可靠、可用性 RabbitMQ附带了一个易于使用的可视化管理工具,它可以帮助你监控消息代理的每一个环节。 如果你的消息系统有异常行为,RabbitMQ还提供了追踪的支持,让你能够发现问题所在。 RabbitMQ附带了各种各样的插件来对自己进行扩展。你甚至也可以写自己的插件来使用。 1.3、AMQP协议模型 2、RabbitMQ安装使用 2.1 安装rabbitmq,配置好阿里云的yum源,epel源 yum -y install erlang rabbitmq-server 2.2 启动rabbitmq服务端 systemctl start rabbitmq

RabbitMQ学习笔记(四、RabbitMQ队列)

放肆的年华 提交于 2020-05-02 01:20:39
目录: 消息路由失败了会怎样 备份交换器 TTL与DLX 如何实现延迟队列 RabbitMQ的RPC实现 持久化 事务 发送方确认机制 消息路由失败了会怎样: 在RabbitMQ中,如果消息路由失败了,一般会有两种情况。要么是把消息回退给客户端处理,要么就把消息丢弃。 处理逻辑是根据basicPublish方法的 mandatory 和 immediate 两个参数来控制。 1、 mandatory :当mandatory=true时,如果交换器无法根据自身类型和路由键匹配到符合条件的队列,便会调用Basic.Return命令将消息会推给生产者;当mandatory=false时,不满足条件则丢弃此条消息。 1 channel.addReturnListener( new ReturnListener() { 2 public void handleReturn( int replyCode, String replyText, String exchange, String routingKey, 3 AMQP.BasicProperties properties, byte [] body) throws IOException { 4 // 具体处理逻辑 5 } 6 }); 2、 immediate :当immediate=true时,交换器将消息路由到队列后

RabbitMQ消息队列怎样做到服务宕机或重启消息不丢失

自闭症网瘾萝莉.ら 提交于 2020-05-01 16:03:21
一、消息为什么丢失 RabbitMQ默认情况下的交换机和队列以及消息是非持久化的,也就是说在服务器重启或者宕机恢复后,之前创建的交换机和队列都将不复存在,之前未消费的消息也就消失不见了。原因在于每个队列和交换机的durable属性。该属性默认情况是false,它决定了RabbitMQ是否需要在崩溃或者重启之后重新创建队列(或者交换机)。 二、持久化交换机和队列 将交换机和队列的durable属性设置为true,这样你就不需要在服务器断电后重新创建队列和交换机了。你也许会认为把队列和交换机的durable属性设置为true就足够可以让消息幸免于重启后丢失了,真的是这样吗?队列和交换机当然必须被设置为true,但光这样做还不够。 能从AMQP服务器崩溃中恢复的消息,我们称之为持久化消息。在消息发布前,通过把它的“投递默认”( delivery mode)选项设置为2(AMQP客户端可能会使用人性化的常量来代替数值)来把消息标记成持久化。到目前为止,消息还只是被表示为持久化的,但是它还必须被发布到持久化的交换机中,并到达持久化的队列中才行。如果不是这样的话,则包含持久化消息的队列(或者交换机)会在Rabbit崩溃重启后不复存在,从而导致消息丢失。 三、持久化消息 因此, 如果消息想要从Rabbit崩溃中恢复,那么消息必须满足以下条件: 1. 把它的投递默认选项设置为持久化 2.