docker rabbitmq php扩展,Docker开启RabbitMQ延时消息队列

前言

经常在开发中会遇到一些不需要同步执行的业务,那我们就需要用到消息队列来进行异步执行,但是对于某些业务就还需要用到延时的功能,比如订单支付超时关闭,那么这个时候我们就需要开启消息队列的延时功能,当然也有朋友说有其他的解决办法,例如:数据库轮训以及线程休眠,但是这些相对于延时消息队列来说,都显得比较逊色。

645cbe9ab5a7f40134e97d86dba744d4.png

正文

安装Docker

docker的安装就不用多说了,在Centos下就一行命令搞定(其他的系统版本请自行查阅):

yum update -y && yum install -y docker && service docker start

拉取RabbitMQ镜像并启动

docker pull rabbitmq:management

docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management

上述命令中的RABBITMQ_DEFAULT_USER为默认用户,RABBITMQ_DEFAULT_PASS为默认密码,请自行修改即可

安装延时插件

首先先到rabbitmq官网下载自己rabbitmq对应版本的延时插件rabbitmq_delayed_message_exchange到服务端,我的是3.7.x,所以执行:

wget https://dl.bintray.com/rabbitmq/community-plugins/3.7.x/rabbitmq_delayed_message_exchange/rabbitmq_delayed_message_exchange-20171201-3.7.x.zip

下载完成之后我们将zip文件进行解压,然后我们执行docker ps查看自己的rabbitmq的容器ID:

[root@121 download]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

c5e3d04e3141 rabbitmq:management "docker-entrypoint..." 7 days ago Up 7 days 4369/tcp, 0.0.0.0:1883->1883/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 0.0.0.0:15672->15672/tcp, 0.0.0.0:25672->25672/tcp, 0.0.0.0:61613->61613/tcp, 15671/tcp rabbit

接着我们将插件拷贝到容器的插件目录下:

docker cp rabbitmq_delayed_message_exchange-20171201-3.7.x.ez c5e3d04e3141:/plugins

# c5e3d04e3141是自己的容器ID

然后我们进入到容器的bash中:

sudo docker exec -it c5e3d04e3141 /bin/bash

进入到plugins目录查看是否有rabbitmq_delayed_message_exchange-20171201-3.7.x.ez文件,有的话就说明成功拷贝到rabbitmq的插件目录了,接着我们就执行最后一步,开启插件:

root@my-rabbit:/plugins# rabbitmq-plugins enable rabbitmq_delayed_message_exchange

Enabling plugins on node rabbit@my-rabbit:

rabbitmq_delayed_message_exchange

The following plugins have been configured:

rabbitmq_delayed_message_exchange

rabbitmq_management

rabbitmq_management_agent

rabbitmq_web_dispatch

Applying plugin configuration to rabbit@my-rabbit...

The following plugins have been enabled:

rabbitmq_delayed_message_exchange

started 1 plugins.

执行rabbitmq-plugins enable rabbitmq_delayed_message_exchange在log最后出现started 1 plugins.,就说明开启成功,退出rabbitmq的bash之后执行docker restart rabbit重启rabbitmq就可以使用延时消息队列来处理业务了。

后记

在以前的业务中我都是用的文章开头说的稍显逊色的做法来处理这种业务,但是这种方法显然是不可靠的,当然以前我不用消息队列的原因就是听着这个名字就觉得很难,后来真正用上了之后发现很好上手的,所以不能再事情未开始之前就给自己下了死刑,加油!

c3ba8d43b2356854af95b93302a1404c.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转]Eclipse插件开发之基础篇(3) 插件的测试与调试

原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/17/eclipse_plugin_1_1_2.html 1. 使用JUnit对插件进行测试 Eclipse中已经嵌入了JUnit,我们可以使用JUnit为插件进行单体测试。一般的JUnit是不可以对插件部分(对Eclipse的API依赖的部分)进行测…

您应该考虑将应用程序升级到Spring 4的5个理由

Spring Framework于2004年首次发布,是顶级Java框架之一。 Spring 4已于2013年12月发布,它是支持Java 8的第一个框架版本。了解为什么应该考虑将应用程序升级到Spring 4。 注意:我最初将此博客文章写在公司博客http://blog.goyello.com上 。 …

大整数乘法c语言代码_大整数乘法

大整数乘法和我们小学学过的乘法公式一样&#xff08;如下图&#xff09;&#xff0c;就是按位相乘&#xff0c;两个数中的每一位彼此相乘&#xff0c;然后将相同列的结果加起来&#xff0c;最后统一处理进位即可。#include <iostream> #include <cstring> using n…

13.5.SolrCloud集群使用手册之数据导入

转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.使用curl命令方式 SolrCloud时会根据路由规则路由到各个shard。 删除所有数据 curl http://192.168.137.171:8080/solr-cloud/myc_shard1_replica1/update?committrue -H "Content-Type: text/xml" --data-b…

dematel matlab,决策与实验室方法,DEMATEL分析方法介绍

DEMATEL实施步骤第一步&#xff1a;从研究目的出发&#xff0c;确定研究指标或元素。量化各元素之间的相互关系。得到直接影响矩阵。第二步&#xff1a;通过归一化原始关系矩阵。得到规范直接影响矩阵。第三步&#xff1a;由规范化直接影响矩阵。计算得到综合影响矩阵。。第四步…

python如何打印字符串_如何在Python中打印“漂亮”字符串输出

Standard Python string formatting就足够了。 # assume that your data rows are tuples template "{0:8}|{1:10}|{2:15}|{3:7}|{4:10}" # column widths: 8, 10, 15, 7, 10 print template.format("CLASSID", "DEPT", "COURSE NUMBER&qu…

mysql5.7环境,MySQL-5.7-线上生产环境部署

环境信息&#xff1a;Centos-7.2.1511MySQL 5.7.22业务名称core本篇文章数据库安装用于线上生成所使用&#xff0c;所安装的数据库使用为Percona版本&#xff0c;同样本站高可用部署都是基于本篇文章基础进行的。部署搭建&#xff1a;安装相关依赖并下载MySQL移动到指定目录yum…

primefaces_懒惰的JSF Primefaces数据表分页–第2部分

primefaces页面代码非常简单&#xff0c;没有复杂性。 检查“ index.xhtml”代码&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"…

龙芯2h芯片不能进入pmon_“龙芯”18年:这个团队,终结了中国计算机产业的“无芯”历史...

近期在第二届数字中国建设峰会上展出的国产芯片龙芯3号。芯片是信息产业的灵魂&#xff0c;通用CPU(中央处理器)可以说是芯片中的“珠峰”。自主研发CPU&#xff0c;难度很大。在这个故事的起点&#xff0c;2001年8月的一个清晨&#xff0c;当龙芯第一代产品龙芯1号成功启动操作…

帝国cms录入表单模板php,帝国cms7.5在线表单提交制作教程

最近春哥仿站团队接到很多仿站客户订单&#xff0c;这里面有一个这样的功能&#xff0c;表单提交。今天花时间写个教程给大家。另外我们春哥仿站团队推出低价仿站业务&#xff0c;市面上99%的企业站点都能制作出来&#xff0c;有需要的联系我们。今天春哥团队华哥给大家讲解一下…

golang linux安装

go在linux下的安装&#xff1a; [rootlocalhost src]# wget https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz 速度还挺快的 [rootlocalhost src]# tar -C /usr/local -xzf go1.8.1.linux-amd64.tar.gz 设置环境变量 [rootlocalhost src]# export PATH$PATH:…

使用反应流作为Drools的数据源

几个月前&#xff0c;我们开始重新设计Drools最低级别的可执行模型 &#xff0c;并使最终用户可以使用Java 8 API进行访问。 为了证明这种方法的灵活性&#xff0c;我尝试将其与反应流集成在一起&#xff0c;尤其是将该流用作Drools的数据源。 为了说明这是如何工作的&#xf…

java jsonobject 转对象_解析JSON中JSONObject的高级使用

文末会有读者福利简介:在程序开发过程中&#xff0c;在参数传递&#xff0c;函数返回值等方面&#xff0c;越来越多的使用JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式&#xff0c;同时也易于机器解析和生成、易于理解、阅读和撰写&#xff0c;而且Json采…

oracle 数据执行计划,Oracle 常见的执行计划步骤(explain结果的Description数据参考)...

在PL/SQL中 执行explain plain for select ...查看Description 数据参考&#xff1a;Oracle常见的执行计划步骤这里我们介绍一些常见的执行计划中的步骤及算法。1、表访问路径(1)TABLE ACCESSFULL&#xff1a;全表扫描。它会访问表中的每一条记录(读取高水位线以内的每一个数据…

CSS3实现Loading动画特效

查看效果&#xff1a;http://hovertree.com/texiao/css3/43/代码如下&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>css3 loading等待加载代码 - 何问起</title><style>keyframes move {from {…

xfs支持oracle,让linux内核支持xfs文件系统

作/译者&#xff1a;叶金荣(Email:)&#xff0c;来源&#xff1a;http://imysql.cn&#xff0c;转载请注明作/译者和出处&#xff0c;并且不能用于商业用途&#xff0c;违者必究。 XFS 简介XFS 最初是由 Silicon Graphics&#xff0c;Inc. 于 90 年代初开发的。那时&#xff0c…

c语言打印菱形_没事了,搞一下C语言打印大小可变的菱形图案?

问题分析&#xff1a;菱形的大小size其实就是中间行中*号的个数&#xff0c;也是整个菱形的行数&#xff0c;其值必是奇数。问题的关键之一是如何确定每行中*号的个数。经过分析得知&#xff1a;当行i<(size1)/2时&#xff0c;该行的*号个数为n2*i-1&#xff0c;否则n2*&…

ListView 与 RecyclerView的创建与使用的异同

相同&#xff1a;1.在使用时&#xff0c;都需要先获取&#xff0c;再新建适配器&#xff0c;再用serAdapter方法绑定适配器 2.创建数据List&#xff0c;都是新建ArrayList 不同&#xff1a;1.在新建适配器类时&#xff0c;listview的适配器继承自ArrayAdapter,recyclerview的适…

测试驱动开发 测试前移_测试驱动开发–双赢策略

测试驱动开发 测试前移敏捷从业人员谈论测试驱动开发 &#xff08;TDD&#xff09;&#xff0c;所以许多关心代码质量和可操作性的开发人员也是如此。 我曾几何时&#xff0c;不久前设法阅读了有关TDD的文章。 据我了解&#xff0c;TDD的关键是&#xff1a; 编写测试&#xff0…

android timer后函数继续执行_Android内存异常机制(用户空间)_JE

常见的Android稳定性异常&#xff0c;有内核异常和Android层异常。内核异常也就是常说的“kernel panic”&#xff0c;简称KE异常&#xff1b;Android层异常又分为java层crash和Native层crash&#xff0c;简称JE、NE异常。此外&#xff0c;Android层异常还有应用ANR和system_Se…