RabbitMQ

springboot集成rabbitmq

余生颓废 提交于 2020-01-30 19:03:18
RabbitMQ简介 RabbitMQ使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现(AMQP的主要特征是面向消息、队列、路由、可靠性、安全)。支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现很出色。 相关概念 消息队列通常有三个概念:发送消息(生产者)、队列、接收消息(消费者)。RabbitMQ在这个基本概念之上,多做了一层抽象,在发送消息和队列之间,加入了交换机。这样发送消息和队列就没有直接关系,而是通过交换机来做转发,交换机会根据分发策略把消息转给队列。 RabbitMQ比较重要的几个概念: 虚拟主机:RabbitMQ支持权限控制,但是最小控制粒度为虚拟主机。一个虚拟主机可以包含多个交换机、队列、绑定。 交换机:RabbitMQ分发器,根据不同的策略将消息分发到相关的队列。 队列:缓存消息的容器。 绑定:设置交换机与队列的关系。 交换机(Exchange) 交换机的主要作用是接收相应的消息并且绑定到指定的队列.交换机有四种类型,分别为Direct,topic,headers,Fanout.   Direct是RabbitMQ默认的交换机模式,也是最简单的模式.即创建消息队列的时候

IBM MQ v8 - real time consumption of a published message

 ̄綄美尐妖づ 提交于 2020-01-30 08:31:07
问题 In a sandbox environment, I'm testing out the IBM MQ. I already have experience with RabbitMq. With IBM MQ, I lack the possibility to directly consume a message in the queue. This is the case with RabbitMQ (Consume() methods). But with IBM MQ I have to explicitly look in the queue with following code: var queue = _queueManager.AccessQueue("queueName", MQC.MQOO_INPUT_AS_Q_DEF + MQC.MQOO_FAIL_IF_QUIESCING); This is what I know about reading a message from the queue right now. But is there

关于RabbitMQ服务器安装

孤者浪人 提交于 2020-01-29 15:45:01
RabbitMQ 安装部署: 安装 otp_win64_19.3(Erlang) 再安装 rabbitmq-server-3.6.9 打开 C:\erl8.3\bin 的 werl(OTP安装目录) WIN+R 打开 CMD(命令) 输入 cd 打开 C:\RabbitMQ Server\rabbitmq_server-3.6.9\sbin(安装所在地址) 再输入 rabbitmq-plugins enable rabbitmq_management 安装完成;打开 localhost:15672/ WEB 管理页面 C:\Users\ USER \AppData\Roaming\RabbitMQ(有需要才用到的配置地址可忽略) C:\Users\admin\AppData\Roaming\ 配置信息 [ {rabbit, [ {loopback_users, [<<"guest">>]}, {tcp_listeners, [{"127.0.0.1", 1234}, {"10.121.1.48", 8009}]} ]} ]. oopback_users:设置只能在与RabbitMq服务同一台机器上访问服务的用户。 tcp_listeners:设置RabbitMQ监听的IP地址与端口。只监听局域网内网iP、修改默认端口,防止被入侵攻击。 设置完后,别忘记了以下操作,否则配置不起作用。

安装rabbitmq

烈酒焚心 提交于 2020-01-29 10:18:26
一.安装erlang 先新建rabbitmq文件夹 cd /usr/local/src/ mkdir rabbitmq cd rabbitmq //下载rpm,如果下载速度慢可以本地下载上传Linux中也可 wget https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_21.2.2-1~centos~7_amd64.rpm //导入公钥 rpm –import http://packages.erlang-solutions.com/rpm/erlang_solutions.asc //安装自动更新依赖(不建议使用rpm安装) yum install esl-erlang_21.2.2-1~centos~7_amd64.rpm //验证是否安装成功 erl 二.安装rabbitmq //下载rabbitmq wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.9/rabbitmq-server-3.7.9-1.el7.noarch.rpm //导入RabbitMQ signing key.Before the Yum repository can be used,

Run multiple Celery tasks using a topic exchange

ⅰ亾dé卋堺 提交于 2020-01-29 09:44:28
问题 I'm replacing some homegrown code with Celery, but having a hard time replicating the current behaviour. My desired behaviour is as follows: When creating a new user, a message should be published to the tasks exchange with the user.created routing key. Two Celery tasks should be trigged by this message, namely send_user_activate_email and check_spam . I tried implementing this by defining a user_created task with a ignore_result=True argument, plus a task for send_user_activate_email and

RabbitMQ 队列类型

与世无争的帅哥 提交于 2020-01-29 06:13:43
RabbitMQ 基于AMQP协议, 默认的交换机类型direct,direct 直接转发,fanout广播模式,topic带通配符匹配的广播模式 direct 这种发送消息的模式,是最简单也是rabbitmq默认的一种,直接创建队列向其发送消息,等待监听者消费 // 直接注册一个常规队列,向这个队列发送消息 @Component public class SendMessage { @Bean public Queue getQueues() { return new Queue(RabbitConstant.HELLO_QUEUE); } @Autowired private AmqpTemplate amqpTemplate; public void send() { try { User user = new User(); user.setAddress("地址"); user.setAge("1"); user.setName("mq"); amqpTemplate.convertAndSend(RabbitConstant.HELLO_QUEUE, JSON.toJSONString(user)); } catch (Exception e) { e.getStackTrace(); } } } 这种队列是点对点的发送与接收,一个消息只能被所有监听者中的一个消费 //

记c# rabbitmq的使用

只愿长相守 提交于 2020-01-28 18:43:50
  本来项目中使用的是msmq,后来看到一篇文章,有人比较了一下几种消息队列的性能,rabbitmq的性能要高于msmq,并且相对成熟。于是准备把项目中的消息队列换一下。这里写篇文章只为记录rabbitmq的安装、配置以及使用。方便以后自己查看,也算是留个记录。   安装   在windows下面安装rabbitmq很简单,先到rabbitmq的官方网站http://www.rabbitmq.com/去下载最新版即可。安装过程中可能会提醒你安装Erlang,按照提示会跳转到对应的下载页面,下载进行安装就行了。这里基本上就是一路next就可以的,不过需要注意的是,在安装的时候需要使用管理员身份进行安装,否则rabbitmq的在线管理工具是无法启用的。   配置   装好之后还是有一个配置文件需要设置一下的,位置是在%HOMEPATH%\AppData\Roaming\RabbitMQ,你会看到下面已经有一个rabbitmq.config.example文件,不过还需要新建一个rabbitmq.config文件。配置内容可参考 [ {rabbit, [ {loopback_users, [<<"guest">>]}, {tcp_listeners, [{"127.0.0.1", 5672}]} ]} ]. loopback_users

如何实现延迟队列

纵然是瞬间 提交于 2020-01-28 16:12:23
延迟队列的需求各位应该在日常开发的场景中经常碰到。比如: 用户登录之后5分钟给用户做分类推送; 用户多少天未登录给用户做召回推送; 定期检查用户当前退款账单是否被商家处理等等场景。 一般这种场景和定时任务还是有很大的区别,定时任务是你知道任务多久该跑一次或者什么时候只跑一次,这个时间是确定的。延迟队列是当某个事件发生的时候需要延迟多久触发配套事件,引子事件发生的时间不是固定的。 业界目前也有很多实现方案,单机版的方案就不说了,现在也没有哪个公司还是单机版的服务,今天我们一一探讨各种方案的大致实现。 1. Redis zset 老幺网 m.laoyao.org 这个方案比较常用,简单有效。利用 Redis 的 sorted set 结构,使用 timeStamp 作为 score,比如你的任务是要延迟5分钟,那么就在当前时间上加5分钟作为 score ,轮询任务每秒只轮询 score 大于当前时间的 key即可,如果任务支持有误差,那么当没有扫描到有效数据的时候可以休眠对应时间再继续轮询。 方案优劣 : 优点: 简单实用,一针见血。 缺点: 单个 zset 肯定支持不了太大的数据量,如果你有几百万的延迟任务需求,大哥我还是劝你换一个方案; 定时器轮询方案可能会有异常终止的情况需要自己处理,同时消息处理失败的回滚方案,您也要自己处理。 所以,sorted set

RabbitMQ在window10上的安装配置

泪湿孤枕 提交于 2020-01-28 13:45:40
1,下载并安装erlang 因为RabbitMQ服务端代码是使用并发式语言Erlang编写的,所以安装Rabbit MQ的前提是安装Erlang。 Erlang官网 下载速度可能会慢一点 个人百度云下载链接 提取码 gdx9 下载之后样子 将其bin目录配置环境变量 具体环境变量如何配置,此处不再罗列 判断是否成功 在cmd命令行输入 erl 即为成功 下载RabbitMQ 官网 暂时先写这么多,有时间补充 来源: CSDN 作者: jueji1998 链接: https://blog.csdn.net/jueji1998/article/details/103762353

Spring整合RabbitMQ

好久不见. 提交于 2020-01-28 07:36:10
Spring实战4介绍了AMQP消息高级协议。进而提到了AMQP协议的实现——RabbitMQ。 RabbitMQ作为一个消息代理中间件。非常的流行,exchange的使用,让消息生产者和消息队列实现了解耦。提供了多种消息路由的方式。 本文不谈原理,只谈集成 1 .引入依赖 2 .RabbitMQ配置文件 3 .占位符配置 4 .使用RabbitMQ 1 .引入依赖 <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>1.5.0.RELEASE</version> </dependency> 2 .RabbitMQ配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/rabbit" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www