RabbitMQ

Evoke a nack in publisher confirm mode

对着背影说爱祢 提交于 2019-12-24 21:09:12
问题 What are the possible reasons for a Nack to occur in publisher confirm mode, and can a Nack be reliably produced for testing, short of pulling a cable to the disk or other hardware-based actions? E.g. sending to a non-existing exchange does not lead to a Nack. It leads to a channel close , just like in non-confirm mode. Btw my rabbit cluster is running on Windows boxes, which might matter, as the file system works quite differently from those in the unix world. 回答1: One way to generate Nacks

Polling in the cloud

眉间皱痕 提交于 2019-12-24 19:55:49
问题 I am creating an app, which will poll a rabbitmq queue for messages. I have three choices: Console app, which listens for new messages Windows service, which listens for new messages Web API, which listens for new messages In normal circumstances I would choose a windows service because it is a long running process and a TCP connection is available to the RabbitMQ server. However, how would this work if we decided to move the application to the cloud in future? The way that I understand it is

RabbitMQ Wont Enable management Plugin

*爱你&永不变心* 提交于 2019-12-24 19:02:39
问题 C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.14\sbin> rabbitmq-plugins.bat enable rabbitmq-management The directory name is invalid. The filename, directory name, or volume label syntax is incorrect. ** (MatchError) no match of right hand side value: {:error, {:node_name, :hostname_not_allowed}} (rabbitmqctl) lib/rabbitmq/cli/core/helpers.ex:32: RabbitMQ.CLI.Core.Helpers.normalise_node/2 (rabbitmqctl) lib/rabbitmqctl.ex:232: RabbitMQCtl.merge_defaults_node/1 (rabbitmqctl) lib

erlang和rabbitmq安装(0)

为君一笑 提交于 2019-12-24 18:50:40
1. erlang下载地址(之前官网下载的有问题): https://bintray.com/rabbitmq/rpm/erlang/20.3.8.9-1 2. 安装erlang & rabbitmq: rpm -ivh erlang-20.3.8.9-1.el6.x86_64.rpm rpm -ivh rabbitmq-server-3.7.8-1.el6.noarch.rpm 3. 启动 1): rabbitmq前台启动 rabbitmq-server start 2): rabbitmq后台启动 rabbitmq-server -detached 4. 查看所有插件列表: rabbitmq-plugins list -v 4.1 启动插件: rabbitmq-plugins enable rabbitmq_management 5. 创建用户: rabbitmqctl add_user nie 1234 6. 设置角色: rabbitmqctl set_user_tags nie administrator 7. 设置默认vhost("/")访问权限 rabbitmqctl set_permissions -p "/" nie "." "." ".*" 来源: 51CTO 作者: 海德堡绝尘 链接: https://blog.51cto.com/coffee/2300742

RabbitMQ安装、配置、基本使用

一个人想着一个人 提交于 2019-12-24 18:27:43
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 安装 ubuntu下参考: https://www.rabbitmq.com/install-debian.html 启动/关闭: $ sudo service rabbitmq-server start|stop 修改文件打开数量的限制,提高并发性能 ulimit 命令可查看限制信息: Syntax ulimit [-acdfHlmnpsStuv] [limit] Options -S Change and report the soft limit associated with a resource. -H Change and report the hard limit associated with a resource. -a All current limits are reported. -c The maximum size of core files created. -d The maximum size of a process's data segment. -f The maximum size of files created by the shell(default option) -l The maximum size that can be locked into

RabbitMQ官方中文入门教程(PHP版) 第一部分:Hello World

ε祈祈猫儿з 提交于 2019-12-24 18:20:13
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> RabbitMQ是一个消息代理。它的核心原理非常简单:接收和发送消息。你可以把它想像成一个邮局:你把信件放入邮箱,邮递员就会把信件投递到你的收件人处。在这个比喻中,RabbitMQ是一个邮箱、邮局、邮递员。RabbitMQ和邮局的主要区别是,它处理的不是纸,而是接收、存储和发送二进制的数据—— 消息 。一般提到RabbitMQ和消息,都用到一些专有名词。 生产(Producing) 意思就是发送。发送消息的程序就是一个 生产者(producer) 。我们一般用”P”来表示: 队列(queue) 就是邮箱的名称。消息通过你的应用程序和RabbitMQ进行传输,它们能够只存储在一个 队列(queue) 中。 队列(queue) 没有任何限制,你要存储多少消息都可以——基本上是一个无限的缓冲。多个 生产者(producers) 能够把消息发送给同一个队列,同样,多个 消费者(consumers) 也能攻从一个 队列(queue) 中获取数据。队列可以化城这样(图上是队列的名称): 消费(Consuming) 和获取消息是一样的意思。一个 消费者(consumer) 就是一个等待获取消息的程序。我们把它画作”C”: Hello World! (使用pika 0.9.5 Python客户端) 我们的“Hello

RabbitMQ官方中文入门教程(PHP版) 第三部分:发布/订阅(Publish/Subscribe)

半世苍凉 提交于 2019-12-24 18:20:01
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 发布/订阅 在上篇教程中,我们搭建了一个工作队列。每个任务之分发给一个工作者(worker)。在本篇教程中,我们要做的之前完全不一样——分发一个消息给多个消费者(consumers)。这种模式被称为“发布/订阅”。 为了描述这种模式,我们将会构建一个简单的日志系统。它包括两个程序——第一个程序负责发送日志消息,第二个程序负责获取消息并输出内容。 在我们的这个日志系统中,所有正在运行的接收方程序都会接受消息。我们用其中一个接收者(receiver)把日志写入硬盘中,另外一个接受者(receiver)把日志输出到屏幕上。 最终,日志消息被广播给所有的接受者(receivers)。 交换器(Exchanges) 前面的教程,我们发送消息到队列并从中取出消息。现在是时候介绍RabbitMq中完整的消息模型了。 让我们简单的概括一下之前的教程: 发布者(producer) 是发布消息的应用程序。 队列(queue) 用于消息存储的缓冲。 消费者(consumer) 是接收消息的应用程序。 RabbitMQ消息模型的核心理念是:发布者(producer)不会直接发送任何消息给队列。事实上,发布者(producer)甚至不知道消息是否已经被投递到队列。 发布者(producer)只需要把消息发送给一个 交换器

RabbitMQ入门(3)--发布和订阅

随声附和 提交于 2019-12-24 18:19:45
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> ### 发布和订阅 ###(使用java 客户端) 在先前的指南中,我们创建了一个工作队列。这工作队列后面的假想是每一个任务都被准确的传递给工作者。在这部分我们将会做一些完全不同的事情--我们将一个消息传递给多个消费者。这部分被认知为“发布和订阅”。 为了说明这个部分,我们会建立一个简单德日志系统,它是由两个程序组成--第一个发出日志消息,第二个接收和打印它们。 在我们的日志系统中,每一个运行的接收者拷贝程序将会获得信息。通过这个方式我们可以运行一个接收者,直接的把日志记录到硬盘中;在同一时间我们可以运行另一个接收者,在屏幕上看这些日志。 本质上,发布日志消息等同于广播到所有接收者。 ###交换 在先前指南部分,我们将消息发送到队列里,并从队列中接收消息。现在是时候介绍RabbitMQ中全消息模型。 让我们快速温习下在先前指南中我们掌握的: 一个发送消息的生产者是一个用户程序。 一个存储消息的队列是一个缓冲。 一个接收消息的消费者是一个用户程序。 在RabbitMQ消息模型中核心的思想是生产者从不直接将消息发送给队列。实际上,生产者常常甚至不知道是否一个消息会被传递到队列中。 相反,生产者仅能将消息发送到一个交换机。一个交换机是一个非常简单的事物。在它的一遍,它从生产者那里接收消息,另一边将消息推送到队列中

Java RabbitMQ client hangs on resend via thread of producer commit callback after nack due to non-existent exchange

烂漫一生 提交于 2019-12-24 17:07:28
问题 I am currently experimenting with failure scenarios that might happen when communicating via the message broker RabbitMQ. The goal is to evaluate how such communication can be made more resilient. In particular, I want to trigger a nack (not-acknowledge) confirm when sending messages in producer-commit mode. To do so, I send a message to a non-existent exchange via Spring AMQP's RabbitTemplate.send . In the callback provided via RabbitTemplate.setConfirmCallback , I then handle ack=false

六、发布消息到RabbitMQ与性能权衡(读书笔记与个人实践)

不羁的心 提交于 2019-12-24 16:56:57
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 摘要 本文主要学习的目标有两个: RabbitMQ中的消息可靠性投递的方式; 发布的性能权衡; 虽然不是所有的系统都要求像银行一样对消息可靠投递有非常严格的要求,但确保消息被接收和投递是非常重要的。RabbitMQ基于AMQP规范,后者提供消息发布中的事务以及消息持久化选项,以提供比自身普通消息发布更高级的可靠消息通信机制。 发布性能的权衡 在RabbitMQ中,创建可靠性投递的每个机制都会对性能产生一定的影响。单独使用时可能不太会注意到吞吐量的差异,但是当它们组合使用时,吞吐量就会由明显不同,只有通过执行自己的性能基准测试,才能确定性能与可靠性投递之间可以接受的平衡。 下面从左到右依次说明这些机制会产生哪些性能影响。 另外,会使用Spring提供的RabbitTemplate客户端工具(使用过RabbitTemplate,后续可能不会介绍RabbitTemplate),对每种机制进行配置,并发送消息到RabbitMQ。 代码在Github: https://github.com/XuePeng87/rabbitmq-example 没有保障 在完美世界里,无须任何额外的配置或操作,RabbitMQ就可以可靠的投递消息。 不幸的是,当墨菲定律肆虐我们的程序时,完美世界并不存在。 在非核心应用中