![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
rabbitmq
文章平均质量分 59
huayang183
不积跬步无以至千里
不积小流无以成江海
展开
-
rabbitMQ碰到了对象跨项目的时候,反序列化出了问题
注意以下几点:1、两个项目中实体要一致,且都要实现Serializable接口。2、private static final long serialVersionUID = xxx L; serialVersionUID要一模一样。最好是把实体类直接copy过去。3、两个项目名虽然不一致,但包名一定要一样。比如项目1、在com.x1.x2.实体类,那么项目2对应的序列化实体也要创建相应的com.x1.x2.实体类。 不一致在反序列化的时候会抛classNotFound之类的错误。PS:当然以后可以原创 2021-05-11 17:11:11 · 653 阅读 · 0 评论 -
rabbitmq消息的序列化与反序列化
一、需求发送时需要将对象序列化为json字符串,接收时反序列化为对象。二、方案1、序列化在任意配置类下提供RabbitTemplate的bean,覆盖Springboot的自动化配置。将消息转译器设置为springboot提供的Jackson转译器。// 提供自定义RabbitTemplate,将对象序列化为json串 @Bean public RabbitTemplate jacksonRabbitTemplate(ConnectionFactory connectionFa...原创 2021-05-11 17:10:37 · 2045 阅读 · 0 评论 -
reply-code=404, reply-text=NOT_FOUND - no exchange
原因:无交换机 解决方案:先启动消费端或者手动在web控制台创建交换机原创 2021-05-11 10:17:51 · 1825 阅读 · 0 评论 -
CentOS7安装RabbitMQ
目录安装erlang 安装RabbitMQ 启动命令 WEB管理 用户管理 登陆回到顶部安装erlang由于rabbitmq是基于erlang语言开发的,所以必须先安装erlang。安装依赖yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-develerlang官网:https://www.er...原创 2021-04-24 00:42:27 · 341 阅读 · 0 评论 -
RabbitMQ开机自启动
如通过yum安装的话直接通过chkconfigrabbitmq-server on 就可以设置为开机自启动,但公司这边是通过源代码进行安装,如何也通过系统服务来自启动呢?步骤:1.增加自启动脚本:在/etc/init.d目录下新建一个rabbitmq-server文件,内容如下:#!/bin/sh## rabbitmq-server RabbitMQ broker## chkconfig: - 80 05# description: Enable AMQP service pr.原创 2021-04-23 22:57:52 · 1265 阅读 · 0 评论 -
解决rabbitmq收到消息打印告警消息
现象:收到消息会打印告警消息::Could not convert incoming message with content-type [null] 解决:RabbitMQ已经实现了Jackson的消息转换(Jackson2JsonMessageConverter),由于考虑到效率,如下使用Gson实现消息转换。如下消息的转换类的接口MessageConverter,Jackson2JsonMessageConverter的父类AbstractJsonMessageConverter针对json转原创 2021-04-19 09:37:47 · 4487 阅读 · 0 评论 -
RabbitMQ:消息发送确认 与 消息接收确认(ACK)
默认情况下如果一个 Message 被消费者所正确接收则会被从 Queue 中移除如果一个 Queue 没被任何消费者订阅,那么这个 Queue 中的消息会被 Cache(缓存),当有消费者订阅时则会立即发送,当 Message 被消费者正确接收时,就会被从 Queue 中移除消息发送确认发送的消息怎么样才算失败或成功?如何确认? 当消息无法路由到队列时,确认消息路由失败。消息成功路由时,当需要发送的队列都发送成功后,进行确认消息,对于持久化队列意味着写入磁盘,对于镜像队列意味着所.转载 2021-04-01 11:04:18 · 311 阅读 · 0 评论 -
rabbitmq自动及手动ACK
mq的ack主要是确认消息被消费者消费完成后通知服务器将队列里面的消息清除。而如果不配置Ack的话呢,我测试过他会自动的忽略,也就是说此时的服务是no_ack=true的模式,就是说只要我发现你是消费了这个数据,至于异常不异常的,我不管了。通知Ack机制就是这么来的,更加灵活的,我们需要Ack不自动,而是手动,这样做的好处,就是使得我们开发人员更加人性化或者灵活的来处理我们的业务罗杰代码,更加方便的处理异常的问题以及数据的返回处理等。下面是通话机制的四条原则:Basic.Ack 发回给 Ra...原创 2021-04-01 11:04:06 · 3934 阅读 · 0 评论 -
RabbitMQ控制台详解
属性 说明overview→Totals 所有队列的阻塞情况Ready 待消费的消息总数Unacked 待应答的消息总数Total 总数 Ready+Unacked属性 说明Publish producter pub消息的速率Publisher confirm broker确认pub消息的速率Deliver(manual ack) ustomer手动确认的速率Deliver( auto ack) customer自动确认的速率C...原创 2021-03-31 09:08:47 · 1257 阅读 · 0 评论 -
RabbitMQ-Failed to check/redeclare auto-delete queue(s).
RabbitMQ的一个问题,我的解决办法是1、清空队列2、给用户分配权限(通常是这个问题)一、队列清空输入命令:rabbitmqctl list_queues查看所有队列接下来1、执行 rabbitmqctl stop_app关闭应用的命令为:2、2、rabbitmqctl reset 清除队列3、rabbitmqctl start_app 启动队列4、再次查看 rabbitmqctl list_queues这个时候队列应该是空的二、添加admin,并赋予administ原创 2021-03-28 23:33:05 · 2320 阅读 · 0 评论 -
rabbitmq的通配符模式(Topic Exchange)的*和#区别
符号“#”匹配路由键的一个或多个词,符号“*”匹配路由键的一个词。 例如:topic.#那么这个队列会会接收topic开头的消息topic.*.queue那么这个队列会接收topic.aaaa.queue这样格式的消息,不接收能topic.aaaa.bbbb.queue这样格式的消息例如,绑定时设置了routing key为”abc”,那么客户端提交的消息,只有设置了key为”abc”的才会投递到队列。对key进行模式匹配后进行投递的叫做Topic交换机,符号”#”匹配一个或多个词,符 号原创 2021-03-27 10:05:08 · 1247 阅读 · 0 评论 -
RabbitMQ-使用@RabbitListener注解消费消息
@RabbitListener注解指定目标方法来作为消费消息的方法,通过注解参数指定所监听的队列或者Binding。使用@RabbitListener可以设置一个自己明确默认值的RabbitListenerContainerFactory对象。可以在配置文件中设置RabbitListenerAnnotationBeanPostProcessor并通过<rabbit:annotation-driven/>来设置@RabbitListener的执行,当然也可以通过@EnableRabbit注解来.原创 2021-03-26 15:46:27 · 12144 阅读 · 5 评论 -
springboot整合rabbitMQ-路由模型
路由的模型,这个就是多了一个路由键,消息里面有路由键,队列里面有路由键,只有路由键匹配之后,才可以消费者获取到数据。生产者 @Test void testRouter() {//使用rabbitmq直接往队列里面放数据// convertAndSend()第一个参数 是 rabbitTemplate.convertAndSend("directs","info","direct 模型里面发送的消息"); }这个生产者在发送消息的时候,就可...原创 2021-03-26 15:43:04 · 724 阅读 · 0 评论 -
RabbitMQ之路由键转发消息
消息队列:目前流行的有 Kafka、RabbitMQ、ActiveMQ等功能:为了解决消息的分布式消费,完成项目、服务之间的解耦动作。消息的生产者与消费者之间完全采用异步通信方式,极大的提高了系统的响应能力,从而提高系统的网络请求吞吐量。Spring-Boot 整合RabbitMQ依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifact...原创 2021-03-26 15:41:19 · 662 阅读 · 0 评论 -
RabbitMQ添加新用户并支持远程访问
第一步:添加 mq 用户并设置密码C:\Users\80002345>rabbitmqctl add_user mq 123456Adding user "mq" ...第二步:添加 mq 用户为administrator角色C:\Users\80002345>rabbitmqctl set_user_tags mq administratorSetting tags for user "mq" to [administrator] ...查看用户列表C:\User原创 2021-03-26 15:38:30 · 608 阅读 · 0 评论 -
RabbitMQ 基本使用(注解的方式)
RabbitMQ 可以采用基于注解的方式来创建队列,如下:1. 手动在 RabbitMQ 管理界面创建 myQueue队列 1. 发送者代码:1@Autowired private AmqpTemplate amqpTemplate; public void send(){ String msg = "mqsender send ..." + new Date(); amqpTemplate.convertAndSend("myQueue...原创 2021-03-26 15:26:20 · 2704 阅读 · 0 评论 -
RabbitMQ-Java实现Publish/Subscribe订阅模式
订阅模式一个生成者,多个消费者,每个消费者有自己的队列,生产者没有直接把消息发到队列,而是发给了交换机exchange适合场景举例:对于同一个消息,要发邮件,也要发短信,因此拆分成两个队列新建连接RabbitMQ的工具类utilsimport com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;import java.io.IOException;import java.util..原创 2021-03-26 15:25:10 · 456 阅读 · 0 评论 -
RasbbitMQ 交换机、路由键与队列绑定
交换器Exchange我们之前讲述的是将消息投递到队列中再有消费者区消费,实际上RabbitM的运作流程不是这样的。真实情况是,生产者将消息发送到 Exchange (交换器:“X”),由交换器将消息路由到一个或者多个队列中,消费者再去消费消息。如果路由不到,或许会返回给生产者,或许直接丢弃(这个看具体配置后面会讲到:)。首先明白两个概念:BindingKey:绑定键,交换机都是需要与队列进行绑定,这里交换键可以简单的理解为交换器与队列之间的路径的名称(可以重复,即可以把多条队列以同一绑定键与路由器绑原创 2021-03-26 15:23:38 · 1867 阅读 · 0 评论 -
Java使用RabbitMQ之订阅分发(Topic)
使用RabbitMQ进行消息发布和订阅,生产者将消息发送给转发器(exchange),转发器根据路由键匹配已绑定的消息队列并转发消息,主题模式支持路由键的通配。生产者代码: 1 package org.study.exchange3.topic3; 2 3 import com.rabbitmq.client.Channel; 4 import com.rabbitmq.client.Connection; 5 import org.junit.Test; 6 import or...原创 2021-03-26 15:19:27 · 585 阅读 · 0 评论 -
rabbitmq页面出现/etc/rabbitmq/rabbitmq.config(not found)解决方法
解决如下:find / -name "rabbitmq.config.example" 找到相应的模板配置文件进行拷贝cp /usr/share/doc/rabbitmq-server-3.6.6/rabbitmq.config.example /etc/rabbitmq/mv rabbitmq.config.example rabbitmq.configservice rabbitmq-server restart即可...原创 2021-03-08 09:41:49 · 1955 阅读 · 0 评论 -
LINUX 安装RABBITMQ详细教程
第一步:下载版本对应的rpm安装包1. 下载Erlang安装包:RabbitMQ是Erlang语言编写,所以Erang环境必须要有,注:Erlang环境一定要与RabbitMQ版本匹配, 版本匹配对照地址:https://www.rabbitmq.com/which-erlang.htmlErlang的下载地址:Erlang下载地址:https://www.rabbitmq.com/releases/erlang/(根据自身需求及匹配关系,下载对应rpm包)2. 下载RabbitMQ安装包, .原创 2021-03-08 09:41:40 · 371 阅读 · 0 评论 -
LINUX 下 RABBITMQ安装与配置
一、安装RABBITMQ SERVER1、安装erlang ,源码安装,或者 yum installl erlanghttps://packages.erlang-solutions.com/erlang/https://packages.erlang-solutions.com/erlang/esl-erlang-src/otp_src_17.0.tar.gz2、下载rabbitmq并解压安装,或者直接 yum install rabbitmqhttp://www.rabbitmq.com/r原创 2021-03-08 09:41:14 · 1207 阅读 · 0 评论 -
RabbitMQ学习笔记:安装环境
环境window10java8+虚拟机:centos7,下载erlang下载地址:http://erlang.org/download/我选的是otp_src_23.0.tar.gz:erlang安装步骤步骤一 解压# 步骤一[yutao@localhost ~] tar -xvf otp_src_23.0.tar.gz12步骤二 配置和检查# 步骤二[yutao@localhost ~] cd otp_src_23.0## 这里通过--prefix指定了安装目录[原创 2021-03-05 17:02:46 · 1221 阅读 · 0 评论 -
User can only log in via localhost
登录遇到问题:User can only log in via localhost解决问题:找到这个文件rabbit.app/usr/lib/rabbitmq/lib/rabbitmq_server-3.7.7/ebin/rabbit.app将:{loopback_users, [<<”guest”>>]},改为:{loopback_users, []},原因:rabbitmq从3.3.0开始禁止使用guest/guest权限通过除localhost外的访问sy原创 2021-03-08 09:41:24 · 4745 阅读 · 1 评论 -
Linux安装RabbitMQ及问题
一.什么是MQ?消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已。其主要用途:不同进程Process/线程Thread之间通信。为什么会产生消息队列?有几个原因:不同进程(process)之间传递消息时,两个进程之间耦合程度过高,改动一个进程,引发必须修改另一个进程,为了隔离这两个进程,在两进程间抽离出一层(一个模块),所有两进程之间传递的消息,都必须通过消息队列来传递,单独修改某一个进程,不会影响另一个;原创 2021-03-08 09:41:32 · 250 阅读 · 0 评论 -
CentOS7下RabbitMq安装和开机自启动配置
安装RabbitMq由于rabbitmq是用erlang语言编写所以需要先安装erlang1.在安装erlang之前先安装下依赖文件(这一步不要忘掉了, 不然后面./configure的时候要报错):[root@localhost 20190903]# yum install gcc glibc-devel make ncurses-devel openssl-devel xmlto完毕之后会出现如下所示:2.到erlang官网去下载erlang安装包[root@localhos.原创 2021-03-02 14:53:17 · 969 阅读 · 0 评论 -
rabbitmq添加自启动 centos7环境
1.编辑一个启动脚本 1 [root@xxx ~]# vim /usr/local/rabbitmq/sbin/start_rabbitmq.sh 内容如下(根据自己的实际位置做替换即可) 1 2 3 4 5 #!/bin/bash exportPATH=$PATH:/usr/local/erlang/bin exportHOME=/usr/local/rabbitm...原创 2021-03-02 14:52:27 · 217 阅读 · 0 评论 -
CentOS7安装RabbitMQ
目录安装erlang 安装RabbitMQ 启动命令 WEB管理 用户管理 登陆回到顶部安装erlang由于rabbitmq是基于erlang语言开发的,所以必须先安装erlang。安装依赖yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-develerlang官网:https://www.er...原创 2021-03-02 14:51:53 · 313 阅读 · 0 评论 -
RabbitMQ配置文件及环境变量
http://www.rabbitmq.com/configure.htmlMechanism Description Configuration File(s) defines server and plugin settings for TCP listeners and other networking-related settings TLS resource constraints (alarms) authentication and autho原创 2021-03-02 14:48:01 · 1878 阅读 · 0 评论 -
Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=
完整错误CachingConnectionFactory.java:1278 - Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - unknown delivery tag 1, class-id=60, method-id=80)原因:消费者有ack确认,而spring-boot-starter原创 2021-01-02 19:41:36 · 22462 阅读 · 3 评论 -
给RABBITMQ发送消息时,设置请求头HEADER
默认如下:content-type:text/plain要求如下:content-type:application/json解决方法如下(针对消息的生产者):在MessagePostProcessor中给message的头做自定义处理(这个功能类似于spring的BeanPostProcessor)对消息的扩展处理,个人认为rabbitMq应该是参考spring的实现方法去实现的。 private final static MessagePostProcess..原创 2021-01-02 19:41:15 · 4589 阅读 · 3 评论 -
RabbitMQ实现(并发)多线程处理消息
@RabbitListener默认是单线程监听队列(@RabbitListener(queues = {MqConstants.OA_TAB_REFRESH}, concurrency = "10") 也能实现十个并发) 缺点 : 单线程处理消息, 当消息队列有多个任务时消费端监听队列每次只消费一个消息 , 容易引起消息堆积 , 处理效率慢… 解决方法 : 多线程处理消息 , 配置mq容器工厂参数 , 增加并发处理量 .@Configurationpublic class RabbitMQConf原创 2020-12-30 09:06:48 · 5427 阅读 · 0 评论 -
RabbitMQ获取队列的消息数目
使用RabbitMQ,业务需求,想要知道队列中还有多少待消费待数据。方式一:@Value("${spring.rabbitmq.host}")private String host; @Value("${spring.rabbitmq.port}")private Integer port; @Value("${spring.rabbitmq.username}")private String username; @Value("${spring.rabbitmq.passw原创 2020-12-30 09:06:28 · 5308 阅读 · 0 评论 -
WINDOWS环境下RABBITMQ的启动和停止命令
rabbitmq启动方式有2种1、以应用方式启动rabbitmq-server-detached后台启动Rabbitmq-server直接启动,如果你关闭窗口或者需要在改窗口使用其他命令时应用就会停止关闭:rabbitmqctl stop2、以服务方式启动(安装完之后在任务管理器中服务一栏能看到RabbtiMq)rabbitmq-serviceinstall安装服务rabbitmq-servicestart开始服务Rabbitmq-servicestop...原创 2020-12-24 17:50:21 · 1492 阅读 · 2 评论 -
Spring Boot集成RabbitMQ发送接收JSON
ObjectMapper最简单发送JSON数据的方式是把对象使用ObjectMapper等JSON工具类把对象转换为JSON格式,然后发送。如下:@AutowiredprivateObjectMapperobjectMapper;publicvoidsendOrder(Orderorder){try{StringorderJson=objectMapper.writeValueAsString(order);Messagem...原创 2020-12-07 09:45:13 · 1458 阅读 · 0 评论 -
RabbitMQ各个参数含义
queueDeclare(String queue,boolean durable,boolean exclusive,Map<String, Object> arguments); queue: 队列名称 durable: 是否持久化, 队列的声明默认是存放到内存中的,如果rabbitmq重启会丢失,如果想重启之后还存在就要使队列持久化,保存到Erlang自带的Mnesia数据库中,当rabbitmq重启之后会读取该数据库 exclusive...原创 2020-11-23 13:27:33 · 1408 阅读 · 0 评论 -
SpringBoot整合RabbitMQ-创建队列并绑定交换机
import org.springframework.amqp.core.Binding;import org.springframework.amqp.core.BindingBuilder;import org.springframework.amqp.core.Queue;import org.springframework.amqp.core.TopicExchange;import org.springframework.amqp.support.converter.Jackson2Js.原创 2020-11-23 13:23:42 · 4193 阅读 · 2 评论 -
AMQP Connection 127.0.0.1:5672] ERROR [o.s.a.rabbit.connection.CachingConnectionFactory] CachingConn
原因当应用启动时,spring 会去检查注册的队列,跟服务器上的队列配置是否一致,如果不一致,则抛出这个错误解决方式一、修改项目配置与mq 保持一致修改项目配置与MQ一致则可以正常运行方式二、删除mq上现有队列(推荐)删除mq 上现有队列,则springboot 自动向mq 服务器注册一个新的队列,也可以解决该问题...原创 2020-11-23 13:19:25 · 9293 阅读 · 1 评论 -
Windows下RabbitMQ安装及配置
1、安装Erlang下载地址:https://www.erlang.org/downloads,本文选择OTP 21.0.1 Windows 64-bit Binary File(91707927)设置环境变量,新建ERLANG_HOME修改环境变量path,增加Erlang变量至path,%ERLANG_HOME%\bin;打开cmd命令框,输入erl至此,Erlang 安装完成2、安装rabbitmq下载地址:http://ww...原创 2020-11-20 08:56:28 · 245 阅读 · 0 评论 -
rabbitmq中的队列transient和durable的区别
Durablity:持久dao化选项,duDurable(持久化保存zhi),Transient(即时保存), 持久化保存会dao在RabbitMQ宕机或者重启专后,未消费的消息仍然属存在,即时保存在RabbitMQ宕机或者重启后交换机会不存在。需要重新定义该Exchange。即时保存可以理解为计算机内存,关机就没了。持久化保存可以理解为硬盘,关机,文件还在。...原创 2020-11-19 11:59:28 · 1797 阅读 · 0 评论