exchange

Rabbitmq的可靠消息投递

别说谁变了你拦得住时间么 提交于 2019-11-29 08:27:37
一、背景 生产端向rabbitmq发送消息时,由于网络等原因可能导致消息发送失败。所以,rabbitmq必须有机制确保消息能准确到达mq,如果不能到达,必须反馈给生产端进行重发。 RabbitMQ消息的可靠性投递主要两种实现: 1、通过实现消费的重试机制,通过@Retryable来实现重试,可以设置重试次数和重试频率; 2、生产端实现消息可靠性投递。 两种方法消费端都可能收到重复消息,要求消费端必须实现幂等性消费。 二、消息投递到exchange的确认模式 rabbitmq的消息投递的过程为: producer ——> rabbitmq broker cluster ——> exchange ——> queue ——> consumer 1、生产端发送消息到rabbitmq broker cluster后,异步接受从rabbitmq返回的ack确认信息。 2、生产端收到返回的ack确认消息后,根据ack是true还是false,调用confirmCallback接口进行处理。 在application.yml中开启生产端confirm模式 spring: rabbitmq: publisher-confirms: true 实现ConfirmCallback接口中的confirm方法,ack为true表示消息发送成功,ack为false表示消息发送失败 @Component

pika 生产 消费 简单类

时光毁灭记忆、已成空白 提交于 2019-11-29 08:22:25
# -*- coding: utf-8 -*- # by dl import pika class MessageQueue: def __init__(self, host='localhost', queueName='TestQueue', exchange='', body='Hello World', consumer_tag=''): self.host = host self.queueName = queueName self.exchange = exchange self.body = body self.consumer_tag = consumer_tag def SPsend(self): connection = pika.BlockingConnection(pika.ConnectionParameters(self.host)) channel = connection.channel() channel.queue_declare(queue=self.queueName) channel.basic_publish(exchange=self.exchange, routing_key=self.queueName, body=self.body) print("[x] Seng 'Hello World!;'") connection

Java 实战 spingboot-rabbitmq

瘦欲@ 提交于 2019-11-29 06:20:53
上一篇我们讲了 springboot 中如何使用 Redis 这一片,要写关于 springboot 中如何使用 rabbitmq 同样,pom.xml 文件配置 rabbitmq 的依赖 application.yml 文件中配置 rabbitmq 数据源 建个文件夹 rabbitmq 用来存 rabbitmq 相关类 创建生产者、消费者类 附代码: 1 package com.ncat.webdemo.rabbitmq; 2 3 import org.springframework.amqp.core.AmqpAdmin; 4 import org.springframework.amqp.core.AmqpTemplate; 5 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.stereotype.Component; 7 8 import java.util.Map; 9 10 @Component 11 public class Producer { 12 @Autowired 13 private AmqpTemplate amqpTemplate; 14 15 @Autowired 16 private AmqpAdmin

laravel 5.6 使用RabbitMQ作为消息中间件

我们两清 提交于 2019-11-29 01:27:01
1、Composer安装laravel-queue-rabbitmq composer require vladimir-yuldashev/laravel-queue-rabbitmq 2、在config/app.php文件中,providers中添加: VladimirYuldashev\LaravelQueueRabbitMQ\LaravelQueueRabbitMQServiceProvider::class, 3、在app/config/queue.php配置文件中的connections数组中加入以下配置 'rabbitmq' => [ 'driver' => 'rabbitmq', 'dsn' => env('RABBITMQ_DSN', null), /* * Could be one a class that implements \Interop\Amqp\AmqpConnectionFactory for example: * - \EnqueueAmqpExt\AmqpConnectionFactory if you install enqueue/amqp-ext * - \EnqueueAmqpLib\AmqpConnectionFactory if you install enqueue/amqp-lib * - \EnqueueAmqpBunny

rabbitMq API

时光总嘲笑我的痴心妄想 提交于 2019-11-29 00:44:38
1.RabbitMQ介绍 1.1python的Queue和RabbitMQ python消息队列: 线程queue(同一进程之间进行交互) 进程queue(父子进程进行交互或同一个进程下的多个子进程进行交互) 两个完全独立的python程序: 是不能用上面的queue进行交互的,或者和其他语言交互的方式有哪些呢? 1.Disk:可以把数据写入磁盘 2.Socket通信 3.消息中间件:RabbitMQ,ZeroMQ,ActiveMQ等。 1.2消息队列的应用场景 1.2.1异步处理 场景说明: 用户注册后,需要发送注册右键和注册短信。 传统方式有两种: 1.串行方式 2.并行方式 串行方式: 将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。 以上三个任务全部完成后,返回给客户端 并行方式: 将注册消息写入数据库成功后,发送注册邮件的同时,发送注册短信。 以上三个任务完成后,返回给客户端。 与串行的差别是,并行的方式可以提高处理的时间。 假设三个业务节点每个使用50ms,不考虑网络等其他开销,串行的方式的时间是150毫秒,并行的时间可能是100毫秒。 因为CPU在单位时间内处理的请求数是一定的,假设CPU1秒内吞吐量是100次。 则串行方式1秒内可处理的请求量是7次(1000/150)。 并行方式处理的请求量是10次(1000/100)。 小节: 传统的方式系统的性能

SecureCRT SSH 失败 Key exchange failed 解决方法

ⅰ亾dé卋堺 提交于 2019-11-28 20:00:31
背景:SecureCRT 的SSH正常使用过程中,突然出现: Key exchange failed。 No compatible hostkey.The server supports these methods: RSA,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519 解决步骤: 1.先是重启服务器的sshd:service sshd restart 2.删除secureCRT的SSH2.ini文件 3.重启secureCRT 4.恢复正常 备注:因为参考了网上的方法都没能恢复,这些操作是自己折腾搞得,哪一步奏效不太清楚,大家可以按步骤都试一下。 来源: https://www.cnblogs.com/geekwade/p/11425246.html

RabbitMQ 六种工作模式

半城伤御伤魂 提交于 2019-11-28 19:29:33
官网介绍:https://www.rabbitmq.com/getstarted.html 六种工作模式的主要特点 简单模式:一个生产者,一个消费者 work模式:一个生产者,多个消费者,每个消费者获取到的消息唯一(消费者彼此竞争成为接收者)。 订阅模式:一个生产者发送的消息会被多个消费者获取。 路由模式:发送消息到交换机并且要指定路由key ,消费者将队列绑定到交换机时需要指定路由key topic模式:将路由键和某模式进行匹配,此时队列需要绑定在一个模式上,“#”匹配一个词或多个词,“*”只匹配一个词。 简单模式(一个生产者,一个消费者) public static final String QUEUE_NAME= "myqueue"; public static void test() throws Exception { //定义连接工厂 ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); factory.setPort(5672); //设置Virtual Host factory.setVirtualHost("/ld"); factory.setUsername("ld"); factory.setPassword("aaa"); //通过工厂获取连接

Spring Boot(八):RabbitMQ 详解

99封情书 提交于 2019-11-28 14:57:18
RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。 消息中间件在互联网公司的使用中越来越多,刚才还看到新闻阿里将 RocketMQ 捐献给了 Apache,当然了今天的主角还是讲 RabbitMQ。消息中间件最主要的作用是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到解耦的目的。在分布式的系统中,消息队列也会被用在很多其它的方面,比如:分布式事务的支持,RPC 的调用等等。 以前一直使用的是 ActiveMQ,在实际的生产使用中也出现了一些小问题,在网络查阅了很多的资料后,决定尝试使用 RabbitMQ 来替换 ActiveMQ,RabbitMQ 的高可用性、高性能、灵活性等一些特点吸引了我们,查阅了一些资料整理出此文。 RabbitMQ 介绍 RabbitMQ 是实现 AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 RabbitMQ 主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。 AMQP,即 Advanced Message Queuing Protocol

RabbitMQ简单认识

自作多情 提交于 2019-11-28 14:52:49
一、简介 RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种客户端,如: Python 、 Ruby 、 .NET 、 Java 、 JMS 、 C 、 PHP 、 ActionScript 、 XMPP 、 STOMP 等,支持 AJAX 。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 二、协议 AMQP ,即 Advanced Message Queuing Protocol ,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP 的主要特征是面向消息、队列、路由(包括点对点和发布 / 订阅)、可靠性、安全。 三、基本概念 Exchange: 交换机,决定了消息路由规则; Queue: 消息队列; Channel: 进行消息读写的通道; Bind: 绑定了 Queue 和 Exchange ,意即为符合什么样路由规则的消息,将会放置入哪一个消息队列; 四、使用过程 消息队列的使用过程大概如下: ( 1 )客户端连接到消息队列服务器,打开一个 channel 。 ( 2 )客户端声明一个 exchange ,并设置相关属性。 ( 3 )客户端声明一个 queue ,并设置相关属性。 ( 4

Exchange各个版本2019年第一个更新补丁已经发布

允我心安 提交于 2019-11-28 14:44:11
2019年2月12日微软官网已经发布了Exchange 2010/2013/2016/2019各个版本的更新补丁,建议各个Exchange管理员更加需求进行下载更新,具体可以参考: https://docs.microsoft.com/zh-cn/Exchange/new-features/build-numbers-and-release-dates?view=exchserver-2019 1、Exchange 2010 SP3 Rollup26下载地址 该补丁主要修复了Exchange Web Services Push Notifications can be used to gain unauthorized access漏洞 https://www.microsoft.com/en-us/download/details.aspx?id=57824 2、Exchange 2013 CU22下载地址 https://www.microsoft.com/en-us/download/details.aspx?id=57826 3、Exchange 2016 CU12下载地址 https://www.microsoft.com/en-us/download/details.aspx?id=57827 4、Exchange 2019 CU1下载地址