一、分析问题背景 在使用Spring AMQP与RabbitMQ进行消息传递时,开发者可能会遇到AmqpAuthenticationFailureException: AMQ报错。 org.springframework.amqp.AmqpAuthenticationFailureException: AMQPLAIN authentication failed for user 'guest' 二、可能出错的原因 导致AmqpAuthenticationFailureException: AMQ 通过以上步骤和注意事项,可以有效解决AmqpAuthenticationFailureException: AMQ报错问题,确保RabbitMQ连接和消息传递的正常运行。
今天说一说amq简单使用_rabbitmq发送消息,希望能够帮助大家进步!!! queue sender package org.arrow.amq.test; import javax.jms.*; import org.apache.activemq.ActiveMQConnection receiver package org.arrow.amq.test; import javax.jms.*; import org.apache.activemq.ActiveMQConnection
查看安全组,发现服务器都开放了8161和61616端口,百度后了解到这两个是AMQ的端口,其中8161是控制台web服务,61616是JAVA消息服务。 搜索AMQ存在的漏洞,发现10月25日新出了一个Apache ActiveMQ 远程代码执行漏洞,只要AMQ版本低于5.15.16,攻击者就可以利用61616端口进行攻击。 查看公司系统,发现AMQ版本是5.15.10,基本上可以判断这是攻击入口。 与研发、运维确定加固方案,需要加白61616端口。 由于该系统边缘端设备部署在客户工厂,边缘端设备已经封装公司的程序,程序需要访问AMQ 61616端口,客户出口不一定具备固定IP,因此只能按照官方公告升级AMQ服务端到5.15.16版本,实施升级需要协调外包软件开发商参与 三、安全建议 对 AMQ的8161、61616端口增加IP白名单限制。 升级AMQ到安全版本。 引入外包软件开发商时,应对软件的组件进行安全评估,并要求软件开发商履行漏洞修复职责。
| direct | | amq.fanout | fanout | | amq.headers | headers | | amq.match | headers | | amq.rabbitmq.log | topic | | amq.rabbitmq.trace | topic | | amq.topic | | direct | | amq.fanout | fanout | | amq.headers | headers | | amq.match | headers | | amq.rabbitmq.log | topic | | amq.rabbitmq.trace | topic | | amq.topic | | headers | | amq.rabbitmq.log | topic | | amq.rabbitmq.trace | topic | | amq.topic |
name | type | +--------------------+---------+ | | direct | | amq.direct | direct | | amq.fanout | fanout | | amq.headers | headers | | amq.match | headers | | amq.rabbitmq.log | topic | | amq.rabbitmq.trace | topic | | amq.topic | | direct | | amq.fanout | fanout | | amq.headers | headers | | amq.match | headers | | amq.rabbitmq.log | topic | | amq.rabbitmq.trace | topic | | amq.topic |
0log.info],routingKey:[log.info],tag:[amq.ctag-YQRXOwb2xsoODmB2fpJ1Qg] 19:42:49.509 [pool-1-thread- 1log.info],routingKey:[log.info],tag:[amq.ctag-YQRXOwb2xsoODmB2fpJ1Qg] 19:42:50.513 [pool-1-thread- 2log.info],routingKey:[log.info],tag:[amq.ctag-YQRXOwb2xsoODmB2fpJ1Qg] 19:42:51.517 [pool-1-thread- 3log.info],routingKey:[log.info],tag:[amq.ctag-YQRXOwb2xsoODmB2fpJ1Qg] 19:42:52.520 [pool-1-thread- 9log.error.rabbitmq],routingKey:[log.error.rabbitmq],tag:[amq.ctag-Ml8Iiz8KSEh4RBn4yfA0xA]
name | type | +--------------------+---------+ | | direct | | amq.direct | direct | | amq.fanout | fanout | | amq.headers | headers | | amq.match | headers | | amq.rabbitmq.log | topic | | amq.rabbitmq.trace | topic | | amq.topic |
fanout) 显示交换机列表 ☁ rabbitMq [master] ⚡ rabbitmqctl list_exchanges Listing exchanges for vhost / ... amq.direct direct amq.rabbitmq.trace topic amq.topic topic amq.match headers amq.headers headers amq.fanout 查看队列的绑定信息 ☁ rabbitMq [master] ⚡ rabbitmqctl list_bindings | grep logs logs exchange amq.gen-SOqwANvv-M0ACC1lWV_MpA queue amq.gen-SOqwANvv-M0ACC1lWV_MpA [] logs exchange amq.gen-eAjX2hrcOsurdyoRYJvmow queue amq.gen-eAjX2hrcOsurdyoRYJvmow [] 查看日志文件 ☁ rabbitMq [master] ⚡ cat logs_from_rabbit.log [*] Waiting
0],tag:[amq.ctag-Fc_B_CoCYUBoBhEcOlC7vw] [pool-1-thread-5] INFO mq.rabbit.ps.SubscriberOne - 收到消息:[ 1],tag:[amq.ctag-Fc_B_CoCYUBoBhEcOlC7vw] [pool-1-thread-6] INFO mq.rabbit.ps.SubscriberOne - 收到消息:[ 2],tag:[amq.ctag-Fc_B_CoCYUBoBhEcOlC7vw] [pool-1-thread-7] INFO mq.rabbit.ps.SubscriberOne - 收到消息:[ 3],tag:[amq.ctag-Fc_B_CoCYUBoBhEcOlC7vw] [pool-1-thread-8] INFO mq.rabbit.ps.SubscriberOne - 收到消息:[ 19],tag:[amq.ctag-ip59jtcKJBQFC2KU9DperQ]
** CURRENT SOURCES *** https://ruby.taobao.org/ [root@h102 ruby]# time gem install bunny Fetching: amq-protocol -2.0.0.gem (100%) Successfully installed amq-protocol-2.0.0 Fetching: bunny-2.2.1.gem (100%) Successfully installed bunny-2.2.1 Parsing documentation for amq-protocol-2.0.0 Installing ri documentation for amq-protocol documentation for bunny-2.2.1 Installing ri documentation for bunny-2.2.1 Done installing documentation for amq-protocol
0log.info],routingKey:[log.info],tag:[amq.ctag-69-YK4fbdRWsRxpVYI280A] 17:35:23.157 [pool-1-thread- 1log.info],routingKey:[log.info],tag:[amq.ctag-69-YK4fbdRWsRxpVYI280A] 17:35:24.162 [pool-1-thread- 2log.info],routingKey:[log.info],tag:[amq.ctag-69-YK4fbdRWsRxpVYI280A] 17:35:25.167 [pool-1-thread- 3log.info],routingKey:[log.info],tag:[amq.ctag-69-YK4fbdRWsRxpVYI280A] 17:35:26.173 [pool-1-thread- 9log.error],routingKey:[log.error],tag:[amq.ctag-IkbrVC8PYMJLwVuD8k6vSg]
中 * @param destPath 目录下所有文本,放入到AMQ中 * @throws Exception */ public void sendMsg4Path e) { e.printStackTrace(); } } /** * 将指定数据放入到AMQ 中 * @param destPath 目录 * @param fileName 文件名,放入到AMQ中的内容 * @throws Exception 中 * @param destPath 目录,或放入到AMQ中的内容 * 当传入的参数既不是目录也不是文件,就把该参数放入到AMQ中 * @throws 取得数据 Jmx4Amq g = new Jmx4Amq("localhost:11099","admin","cacikf88"); g.getStatus(); }
ActiveMQ 持久化方案介绍 ---- ActiveMQ 的消息持久化机制有 JDBC、AMQ、KahaDB 和 LevelDB,无论使用哪种持久化方式,消息的存储逻辑都是一致的。 AMQ 方式 ---- http://activemq.apache.org/amq-message-store 基于文件的存储方式,它具有写入速度快和容易恢复的特点,但是由于其重建索引时间过长 KahaDB 方式 ---- http://activemq.apache.org/kahadb 从 ActiveMQ 5.4 开始默认的持久化方式,KahaDB 恢复时间远远小于其前身 AMQ 并且使用更少的数据文件,所以可以完全代替 AMQ。
,使用非手动ack模式(autoAck=true)进行消费,伪队列amq.rabbitmq.reply-to不需要显式声明,当然如果需要的话也可以显式声明。 发布消息的时候,消息属性中的reply-to属性需要指定为amq.rabbitmq.reply-to。 注意事项: RPC客户端在创建伪队列amq.rabbitmq.reply-to消费者的时候必须使用非手动ack模式(autoAck=true)。 伪队列amq.rabbitmq.reply-to可以在basic.consume、basic.publish和消息属性reply-to中使用,实际上,它并不是一个真实存在的队列,RabbitMQ的Web 进行消费,消息接收方回复到伪队列amq.rabbitmq.reply上。
direct amq.direct direct amq.fanout fanout amq.headers headers amq.match headers amq.rabbitmq.log topic amq.rabbitmq.trace topic amq.topic topic [root@h102 ruby]# rabbitmqctl list_bindings Listing bindings
direct amq.direct direct amq.fanout fanout amq.headers headers amq.match headers amq.rabbitmq.log topic amq.rabbitmq.trace topic amq.topic topic logs fanout ...done. 在这个结果集列表中有一些 amq.*.exchanges 和默认未命名的交换器。这些都是RabbitMQ默认创建的,但是你未必能用到它们。 它有点类似 amq.gen-JzTY20BRgKO-HjmUJj0wLg 这样的形式。 绑定(Bindings) 我们已经创建了一个广播式的交换器和队列。
fanout amq.match headers amq.direct direct amq.rabbitmq.log topic amq.topic topic amq.rabbitmq.trace topic amq.headers headers amq.match headers amq.direct direct amq.rabbitmq.trace topic amq.fanout fanout true false direct true false amq.rabbitmq.trace topic true false amq.rabbitmq.log topic true false amq.topic topic true false amq.headers headers true false amq.direct exchange msg-inbox-errors queue msg-inbox-errors [] exchange q1 queue q1 [] amq.fanout
body_size":10,"is_truncated":false,"content_encoding":null,"delivery_info":{"channel":{"callbacks":{"amq.ctag-epGZgfHej3YrjZk2FBvp0A redelivered":false,"exchange":"exchange_test","routing_key":"example-test-routing-key","consumer_tag":"amq.ctag-epGZgfHej3YrjZk2FBvp0A body_size":10,"is_truncated":false,"content_encoding":null,"delivery_info":{"channel":{"callbacks":{"amq.ctag-epGZgfHej3YrjZk2FBvp0A redelivered":false,"exchange":"exchange_test","routing_key":"example-test-routing-key","consumer_tag":"amq.ctag-epGZgfHej3YrjZk2FBvp0A
org.springframework.amqp.rabbit.listener.BlockingQueueConsumer - Retrieving delivery for Consumer: tags=[{amq.ctag-s5myKVHHeP4FbTGIH0hyeA org.springframework.amqp.rabbit.listener.BlockingQueueConsumer - Storing delivery for Consumer: tags=[{amq.ctag-s5myKVHHeP4FbTGIH0hyeA org.springframework.amqp.rabbit.listener.BlockingQueueConsumer - Retrieving delivery for Consumer: tags=[{amq.ctag-s5myKVHHeP4FbTGIH0hyeA org.springframework.amqp.rabbit.listener.BlockingQueueConsumer - Storing delivery for Consumer: tags=[{amq.ctag-s5myKVHHeP4FbTGIH0hyeA org.springframework.amqp.rabbit.listener.BlockingQueueConsumer - Storing delivery for Consumer: tags=[{amq.ctag-s5myKVHHeP4FbTGIH0hyeA
配置 logging.level.com.epnc.amq=trace logging.file.name=F:/ads-log/ads-amq.log logging.level.root=warn