RabbitMQ

Linux下 RabbitMQ的安装与配置

岁酱吖の 提交于 2019-12-29 20:08:31
一 Erlang 安装 RabbitMQ是基于Erlang的,所以首先必须配置Erlang环境. 从Erlang的官网 http://www.erlang.org/download.html 下载最新的erlang安装包,Linux和MacOSX下载的版本是 R15B01 Source File (72.0 MB) 我的是Mac OSX系统 所以我直接在 http://www.erlang-solutions.com/section/132/download-erlang-otp下载的对应版本的安装包,省的自己配置和安装了 然后解压下载的gz包 tar zxcf *.tar.gz cd 进入解压出来的文件夹 执行 ./configure --prefix=/opt/erlang 就会开始编译安装 会编译到 /opt/erlang 下 然后执行 make 和 make install 编译完成以后,进入 /opt/erlang ,输入 erl 测试 erlang 是否安装成功。 修改 /etc/profile 文件,增加下面的环境变量: #set erlang environment export PATH=$PATH:/opt/erlang/bin source profile 使得文件生效 肯能会出现找不到包的情况,就直接yum install 吧! 二 simplejson

RabbitMQ用户指南(RabbitMQ-C)

依然范特西╮ 提交于 2019-12-29 17:32:19
RabbitMQ-C客户端使用说明 rabbitmq-c是一个用于C语言的,与AMQP server进行交互的client库,AMQP协议为版本0-9-1。rabbitmq-c与server进行交互前需要首先进行login操作,在操作后,可以根据AMQP协议规范,执行一系列操作。 这里,根据项目需求,只进行部分接口说明,文后附demo的github地址。 接口描述: amqp_connection_state_t amqp_new_connection(void); 接口说明:声明一个新的amqp connection int amqp_open_socket(char const *hostname, int portnumber); 接口说明:获取socket. 参数说明:hostname RabbitMQ server所在主机 portnumber RabbitMQ server监听端口 void amqp_set_sockfd(amqp_connection_state_t state,int sockfd); 接口说明:将amqp connection和sockfd进行绑定 amqp_rpc_reply_t amqp_login(amqp_connection_state_t state, char const *vhost,int channel_max,int

RabbitMQ 集群&使用说明

半城伤御伤魂 提交于 2019-12-29 12:27:02
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 集群 集群所有机器都安装好erlang和RabbitMQ(安装方式见上一篇) Rabbitmq的集群是依附于erlang的集群来工作的,必须保证各节点erlang的cookie是一样的(最好从主节点copy到各个节点上):/var/lib/rabbitmq/.erlang.cookie 启动各个节点的RabbitMQ # 启动服务 service rabbitmq-server start rabbitmqctl start_app # 把节点添加到集群中(默认磁盘持久化,--ram表示内存) rabbitmqctl join_cluster --ram rabbit@[hostname] # 如果要更改节点持久化类型,需要先停再改 rabbitmqctl stop_app rabbitmqctl change_cluster_node_type disc(ram) 这时候在web页面的overview就能看到你集群中所有的节点情况了。 镜像配置 集群并不能保证高可用,假设节点2宕机了,那么节点2上面的queue,exchange和message都会丢失,即使是用磁盘持久化,在宕机这段时间内,该queue,exchange都无法提供服务。 于是,诞生了镜像:把A节点的内容镜像到B节点(相当于备份)

Delete all the queues from RabbitMQ?

心已入冬 提交于 2019-12-29 10:06:47
问题 I installed rabbitmqadmin and was able to list all the exchanges and queues. How can I use rabbitmqadmin or rabbitmqctl to delete all the queues. 回答1: First, list your queues: rabbitmqadmin list queues name Then from the list, you'll need to manually delete them one by one: rabbitmqadmin delete queue name='queuename' Because of the output format, doesn't appear you can grep the response from list queues . Alternatively, if you're just looking for a way to clear everything (read: reset all

RabbitMQ之发布订阅

北城以北 提交于 2019-12-29 05:51:55
工作队列中,每个任务之分发给一个工作者。如果需要分发一个消息给多个消费者,这种模式被称为“发布/订阅” 交换器(Exchanges) RabbitMQ完整的消息模型 发布者(producer)是发布消息的应用程序 队列(queue)用于消息存储的缓冲 消费者(consumer)是接收消息的应用程序 RabbitMQ消息模型的核心理念是: 发布者(producer)不会直接发送任何消息给队列。事实上,发布者(producer)甚至不知道消息是否已经被投递到队列。 发布者(producer)只需要把消息发送给一个交换器(exchage),然后由它一边从发布者接收消息,一边把消息推入队列。交换器必须知道如何处理它接收到的消息,是应该推送到指定的队列还是多个队列,或者直接忽略消息。这些规则通过exchange type来定义。 交换器类型 1、direct 处理路由键,需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。 是完整的匹配,与routing_key对应。 2、topic 将路由键和某模式进行匹配。此时队列需要绑定在一个模式上。 符号#匹配一个或多个词,符号*匹配不多不少一个词。 例如audit.#能够匹配到audit.irs.corportate,但是audit.*只会匹配audit.irs 类似消息归类 注:多台服务器访问同一个队列时

Consuming not acknowledge messages from RabbitMq

感情迁移 提交于 2019-12-29 04:02:53
问题 I have create a simple publisher and a consumer which subscribes on the queue using basic.consume . My consumer acknowledges the messages when the job runs without an exception. Whenever I run into an exception I don´t ack the message and return early. Only the acknowledged messages disappear from the queue, so that´s working correctly. Now I want the consumer to pick up the failed messages again, but the only way to reconsume those messages is by restarting the consumer. How do I need to

Is the HTTP method PURGE idempotent in Varnish?

半城伤御伤魂 提交于 2019-12-29 01:45:17
问题 Is the HTTP verb PURGE idempotent? If I send the same PURGE request twice will I receive 200 the second time? I have a microservice that invalidates a Varnish cache before publishing a message into a rabbit queue. In case of purge failure our need is to just log and continue the execution. The queue consumer has to get the latest status of the resource from the Varnish cache. Will a new purge request (before actually requesting the resource from varnish) from the second microservice return

centos7.x 安装 RabbitMQ

余生颓废 提交于 2019-12-29 00:27:01
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 官网说明: https://www.rabbitmq.com/install-rpm.html#downloads CentOS 8.x,7.x和6.x(有三个独立的RPM软件包:一个用于8.x系列,一个用于7.x,一个用于6.x) 需要root用户或者sudo权限 1. 下载&安装rpm仓库,安装erlang # 不推荐离线安装(需要装一堆环境才能编译) wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm rpm -Uvh erlang-solutions-1.0-1.noarch.rpm yum install erlang # 查看版本,以便后面找对应的rabbitmq包 erl -version 2. 安装RabbitMQ 从官网下载对应的rpm包,版本一定要是兼容列表内的: https://www.rabbitmq.com/which-erlang.html # 我从github下(版本随便选),也可以从官网下 wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.18/rabbitmq-server-3.7.18

CentOS7安装OpenStack(Rocky版)-01.控制节点的系统环境准备

北慕城南 提交于 2019-12-28 22:31:13
分享一下Rocky版本的OpenStack安装管理经验: OpenStack每半年左右更新一版,目前是版本是201808月发布的版本-R版(Rocky),目前版本安装方法优化较好,不过依然是比较复杂 官方文档地址: https://docs.openstack.org/install-guide/openstack-services.html 本文主要分享控制节点的环境配置方法: ---------------- 完美的分割线 ------------------ 1.0.系统环境 1)生产测试应用的服务器最好是物理机,虚拟目前可以完成搭建测试体验 2)系统选择是目前的最新版本:CentOS Linux release 7.5.1804 (Core) 3)控制节点Controller :192.168.1.81 计算节点Nova:192.168.1.82 1.1.配置域名解析 1)配置主机名 # 主机名设置好就不能修改,否则会出问题,控制节点和计算节点配置相同,且都需要配置 hostname openstack01.zuiyoujie.com hostname echo "openstack01.zuiyoujie.com"> /etc/hostname cat /etc/hostname 2)配置主机名解析 vim /etc/hosts ---------------------

ActiveMQ或RabbitMQ或ZeroMQ或[关闭]

浪尽此生 提交于 2019-12-28 20:54:19
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我们有兴趣听听ActiveMQ与RabbitMQ和ZeroMQ的优缺点。 还欢迎有关任何其他有趣的消息队列的信息。 #1楼 还有的RabbitMQ和ActiveMQ的之间的比较 在这里 。 开箱即用,ActiveMQ配置为保证消息传递 - 与不太可靠的消息传递系统相比,这会给人留下缓慢的印象。 如果您愿意,您可以随时更改性能配置,并获得至少与其他任何邮件系统一样的性能。 至少你有这个选择。 有关论坛和ActiveMQ常见问题解答的大量信息,用于配置扩展,性能和高可用性。 此外,ActiveMQ将在规范最终确定时支持AMQP 1.0,以及其他有线格式,如STOMP。 ActiveMQ的另一个好处是它的Apache项目,因此开发人员社区存在多样性 - 而且它与一家公司无关。 #2楼 我只能加上关于ActiveMQ的2美分,但因为这是最流行的一个: 您想要写的语言可能很重要。 尽管ActiveMQ确实拥有大多数客户端,但与Java库相比,它们的C#实现远非完整。 这意味着一些基本功能是片状的(故障转移协议......好吧......在某些情况下失败,没有重新传递支持)而其他根本就不存在。 由于.NET似乎对项目来说并不是那么重要,因此开发速度相当慢,并且似乎没有任何发布计划。 Trunk经常被破坏