exchange

springboot mq docker

放肆的年华 提交于 2020-03-30 22:15:12
作为自己熟悉几种常用mq中间件的过程记录 持续更新 rabbitmq 安装部分 2019.1.24 docker pull rabbitmq:management docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq 镜像id netstat -atnlp查看端口占用 跑起来rabbitmq后日志正常无问题 但访问15672 无返回值,搜了俩小时资料 换了各种包也不好用,明天问问老大吧,初步怀疑可能是防火墙/端口未开放的事,但搜了开放端口的各种命令也不好用。。先看看activemq吧 2019.1.25 继续rabbitmq 先装好再说吧。。 今天学到了查看端口占用情况的命令 netstat -tunlp netstat -tunlp|grep 15672 sudo yum install lsof y lsof -i :15672 端口也监听上了 15672的state也是listen了 问了微信群 认为的大致问题为 1.映射的端口不对 2.没有暴露到外部 3.镜像使用错误(没有management,不带managementg-plugin) 4.启动后 附加management命令才启动界面 但上面的4个问题要么能自己确认没有问题,要不就是不会,不知道怎么排查。但群友提出了docker hub上的截图,决定去看看

exchange删除邮件

非 Y 不嫁゛ 提交于 2020-03-27 23:33:48
一 批量删除特定主题的邮件 1.1 批量删除所有数据库中特定主题的邮件 1) 群发了几封主题为“backup”的邮件; 2) 当前操作账号需要满足如下需求: a)该账号需属于Exchange Server 管理员角色以及源服务器和目标服务器的本地 Administrator组; b)Exchange 收件人管理员角色; c)该账号必须具备对其他人邮箱的读写权限。 3) 运行如下命令将administrator赋予对企业内邮箱的完全访问权限; Get-mailbox | Add-MailboxPermission -User administrator -Acce***ights Fullaccess 输入以下命令,对操作用户赋予mailbox import and export组权限,否则在EMS里找不到Search-Mailbox命令: New-ManagementRoleAssignment -Role "Mailbox Import Export" -User contoso\administrator 4) 运行一下命令删除特定主题的邮件(此命令为删除所有邮箱此标题的邮件) get-mailbox -resultsize unlimited | search-mailbox -SearchQuery "主题:'backup'" –DeleteContent

No.014-Python-学习之路-Day11-RabbitMQ

孤人 提交于 2020-03-27 15:35:20
RabbitMQ消息队列 RabbitMQ is the most widely deployed open source message broker. RabbitMQ消息队列与threading Queue及Process Queue 1.threading Queue: 仅可实现在同一进程内的线程之间的交互; 2.进程Queue:父进程与子进程进行交互,或者同属于同一父进程下多个子进程间的交互; 3.那如何实现两个相互独立的Python进程通信呢?如果是java进程与Python进程的交互呢?->使用RabbitMQ RabbitMQ的安装-win-详细戳 这里 安装erlang->加ERLANG_HOME的用户变量->PATH中添加->%ERLANG_HOME%\bin->cmd下运行erl出现版本即成功 安装RabbitMQ->进Rabbitmq的cmd->rabbitmq-plugins.bat enable rabbitmq_management->启动rabbitmq-server.bat->登录 http://localhost:15672/ RabbitMQ在Python上的clients-详细戳 这里 实现最简单的队列通信 applications Produce Messages: Exchanges Route and Filter Messages

Exchange 2013查看数据库失败

柔情痞子 提交于 2020-03-25 17:36:39
(PID 25556,线程 67)任务 Get-MailboxDatabase 正在引发未处理的异常: System.NullReferenceException: 未将对象引用设置到对象的实例。 在 Microsoft.Exchange.Management.SystemConfigurationTasks.GetDatabaseTask 1.WriteResult[T](IEnumerable 1 dataObjects) 在 Microsoft.Exchange.Configuration.Tasks.GetTaskBase 1.InternalProce***ecord()<br/>在 Microsoft.Exchange.Configuration.Tasks.GetObjectWithIdentityTaskBase 2.InternalProce***ecord() 在 Microsoft.Exchange.Management.SystemConfigurationTasks.GetDatabaseTask`1.InternalProce***ecord() 在 Microsoft.Exchange.Configuration.Tasks.Task.Proce***ecord()。 来源: 51CTO 作者: 胡志冲 链接: https://blog.51cto

SpringBoot + RabbitMQ ,保证消息100% 投递成功并被消费(附源码)

泪湿孤枕 提交于 2020-03-25 15:48:51
3 月,跳不动了?>>> 一、先扔一张图 说明: 本文涵盖了关于RabbitMQ很多方面的知识点, 如: 消息发送确认机制 消费确认机制 消息的重新投递 消费幂等性, 等等 这些都是围绕上面那张整体流程图展开的, 所以有必要先贴出来, 见图知意 二、实现思路 简略介绍163邮箱授权码的获取 编写发送邮件工具类 编写RabbitMQ配置文件 生产者发起调用 消费者发送邮件 定时任务定时拉取投递失败的消息, 重新投递 各种异常情况的测试验证 拓展: 使用动态代理实现消费端幂等性验证和消息确认(ack) 三、项目介绍 springboot版本2.1.5.RELEASE, 旧版本可能有些配置属性不能使用, 需要以代码形式进行配置 RabbitMQ版本3.7.15 MailUtil: 发送邮件工具类 RabbitConfig: rabbitmq相关配置 TestServiceImpl: 生产者, 发送消息 MailConsumer: 消费者, 消费消息, 发送邮件 ResendMsg: 定时任务, 重新投递发送失败的消息 说明: 上面是核心代码, MsgLogService mapper xml等均未贴出, 完整代码可以参考GitHub上的源码,地址在文末。 四、代码实现 1、163邮箱授权码的获取, 如图: 该授权码就是配置文件spring.mail.password需要的密码 2、pom

python - 操作RabbitMQ

大城市里の小女人 提交于 2020-03-24 18:20:02
介绍 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。 应用场景: RabbitMQ无疑是目前最流行的消息队列之一,对各种语言环境的支持也很丰富,作为一个.NET developer有必要学习和了解这一工具。消息队列的使用场景大概有3种: 1、系统集成,分布式系统的设计。各种子系统通过消息来对接,这种解决方案也逐步发展成一种架构风格,即“通过消息传递的架构”。 2、当系统中的同步处理方式严重影响了吞吐量,比如日志记录。假如需要记录系统中所有的用户行为日志,如果通过同步的方式记录日志势必会影响系统的响应速度,当我们将日志消息发送到消息队列,记录日志的子系统就会通过异步的方式去消费日志消息。 3、系统的高可用性,比如电商的秒杀场景。当某一时刻应用服务器或数据库服务器收到大量请求,将会出现系统宕机

Spring集成RabbitMQ-必须知道的几个概念

主宰稳场 提交于 2020-03-22 00:58:14
上篇《Spring集成RabbiMQ-Spring AMQP新特性》我们了解了最新spring-rabbit的2.0.0.M5版本相较于之前有哪些变化。其实使用Spring-amqp确实简单,其主要就一些jar包,比如spring-amqp,spring-rabbit等。这篇就通过几个基本概念来了解下Spring amqp和原生amqp在用法上有何不同。 消息体 在《RabbitMQ入门》系列中,我们如果要发送一条消息,都是转成字节数组的,类似这样 channel.basicPublish("", QUEUE_NAME, null, "hello world".getBytes()); 但是在spring-amqp中,定义了一个消息类,用于存储消息实体和消息的属性信息。下面是该类的成员变量和方法 getBody就是获取消息体的内容,相当于上面的“hello world” getMessageProperties可以得到有关消息本身的属性信息,比如messageId消息的id标识,timestamp时间戳等等的值 使用这将上面属性的值通过setHeader(String key, Object value)方法添加到消息类中 Exchange 读过《RabbitMQ入门》系列,想必对于Exchange应该就不会陌生。在RabbitMQ是实际上所有的消息都不是生产者直接送到消费者

RabbitMQ入门-Routing直连模式

此生再无相见时 提交于 2020-03-22 00:56:17
Hello World模式,告诉我们如何一对一发送和接收消息; Work模式,告诉我们如何多管齐下高效的消费消息; Publish/Subscribe模式,告诉我们如何广播消息 那么有没有灵活强一点的既可以高效消费,又可以同时送达多个消费者的模式? 有,这就是Routing模式,我又称之为Direct直连模式。 Routing模式 一个生产者P,一个交换机X,多个消息队列Q以及多个消费者C 在Exchange和Queue中,我们看到了不同的规则,也就是Routing Key 显然从图中的说明,我们就知道这是一个log日志根据级别派发消息的例子。熟悉Log日志系统的应该都知道,一般的log系统分为error、info、warn和debug等。从图中我们可以看出,将日志级别为error的定向的派发到第一个消息队列,将error、warn和info级别的日志派发到第一个消息队列。 该模型首先实现了定向派发,而不再是订阅模式那种广播式的派发。同一条消息既可以派发给一个Queue,也可以同时派发给两个或者多个Queue,这就是该模式的灵活之处。下面来看看实例 发送端 /** * Created by jackie on 17/8/7. */ public class EmitLogDirect { private static final String EXCHANGE_NAME =

RabbitMQ安装教程

大城市里の小女人 提交于 2020-03-21 01:26:22
RabbitMQ安装教程(转:http://blog.csdn.net/lu1005287365/article/details/52315786) 简介: RabbitMQ是流行的开源消息队列系统,用erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。 如果不熟悉AMQP,直接看RabbitMQ的文档会比较困难。不过它也只有几个关键概念,这里简单介绍。 安装: 首先需要安装 Erlang环境 官网: http://www.erlang.org/ Windows版下载地址: http://www.erlang.org/download/otp_win64_17.3.exe Linux版: 使用yum安装 Windows安装步骤; 第一步运行: 第二 步: 第三步: 第四步: 第五步: 这样 就安装完了 Erlang 然后就可以安装RabbitMQ了 首先下载RabbitMQ 的Windows版本 下载地址: http://www.rabbitmq.com/ 打开安装程序 按照下面步骤安装: 安装都比较简单 如此就安装完成了 这样就是安装完成后的开始菜单的效果 都是一些工具 然后进入管理工具 运行命令: [plain] view plain copy print ? rabbitmq-plugins enable rabbitmq_management

[C++面试题]之冒泡排序

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-19 17:23:20
1、排序方法 将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。 (1)初始 R[1..n]为无序区。 (2)第一趟扫描 从无序区底部向上依次比较相邻的两个气泡的重量,若发现轻者在下、重者在上,则交换二者的位置。即依次比较(R[n],R[n-1]),(R[n-1],R[n-2]),…,(R[2],R[1]);对于每对气泡(R[j+1],R[j]),若R[j+1].key<R[j].key,则交换R[j+1]和R[j]的内容。 第一趟扫描完毕时,"最轻"的气泡就飘浮到该区间的顶部,即关键字最小的记录被放在最高位置R[1]上。 (3)第二趟扫描 扫描R[2..n]。扫描完毕时,"次轻"的气泡飘浮到R[2]的位置上…… 最后,经过n-1 趟扫描可得到有序区R[1..n] 注意: 第i趟扫描时,R[1..i-1]和R[i..n]分别为当前的有序区和无序区。扫描仍是从无序区底部向上直至该区顶部。扫描完毕时,该区中最轻气泡飘浮到顶部位置R[i]上,结果是R[1..i]变为新的有序区。 2、冒泡排序过程示例 对关键字序列为49 38 65 97 76 13 27 49