spring-amqp相关内容

如何使用@RabbitListener优雅地停止使用消息

是否可以正常停止ListenerContainer及其关联的Consumers. 我要实现的目标. 停止消耗消息. 优雅地停止ListenerContainer. 等待长期运行的使用者,并在完成后确认. 我可以使用consumer.stop()停止ListenerContainers,但是活动的长时间运行的使用者不会成功完成,并且处理过的消息也不会得到确认,因此一旦Liste ..
发布时间:2020-07-09 03:22:07 Java开发

如何停止使用@RabbitListener接收消息

当我使用MessageListenerAdapter处理消息时,可以调用SimpleMessageListenerContainer.stop()来停止队列中的消费.但是,当我更改为使用@RabbitListener进行监听之后,找不到类似的方法.我尝试了CachingConnectionFactory.stop()但没有用.有人可以帮忙吗?非常感谢. 解决方案 给@RabbitListe ..
发布时间:2020-07-09 00:38:10 其他开发

作为bean动态添加新的队列,绑定和交换

我目前正在研究Rabbit-amqp实施项目,并使用spring-rabbit以编程方式设置我所有的队列,绑定和交换. (spring-rabbit-1.3.4和spring-framework版本3.2.0) 在我看来,javaconfiguration类或基于xml的配置中的声明都非常静态.我知道如何为队列设置更动态的值(例如名称),交换 或像这样绑定: @Configuratio ..
发布时间:2020-07-08 23:53:24 其他开发

Spring Cloud Contract和普通Spring AMQP

我们在我们的Spring Boot项目中使用普通的 Spring AMQP . 我们要确保我们的消息使用者可以针对真实消息进行测试,而避免针对静态测试消息进行测试. 因此,我们的生产者可以在测试阶段生成消息摘要,以供消费者测试使用,以确保它针对最新消息版本进行测试,并查看生产者中的更改是否破坏了消费者. Spring Cloud Contract 似乎正是这样做的.那么有没有办法 ..

过期的邮件传递顺序RabbitMQ

我们正在构建一种解决方案,其中将消息发布到超时队列中. TTL到期消息被推送到主队列以进行重新处理之后. 我们正在设置计数器值,以便尝试对x号进行消息发送.重新交付的时间. 解决方案工作正常.但是这种情况是,当头部位置最高的TTL消息没有过期时,其他过期时间较短的消息将不会重新发布(到主队列). 这种理解正确吗?如果是,那么解决方案是什么,以便仅在TTL之后重新处理每条消息. ..
发布时间:2020-07-05 04:41:33 其他开发

RabbitMQ的集成测试

当前,我正在处理某些与RabbitMQ交互的Spring Boot 2.x应用程序. 我想创建一个集成测试来测试整个应用程序.逻辑,包括与Rabbit互动.到目前为止,我需要轻巧的AMQP标准独立实现来使Spring Boot与其配合使用,包括发送&接收消息.我在这里 但它需要RabbitMQ在对我的IT不太有利的地方运行.还有其他成熟的轻量级独立AMQP实现吗? 首先感谢您的协助. ..
发布时间:2020-07-05 01:39:23 其他开发

跨多个RabbitMQ实例的RabbitMQ RPC

我有三个客户端,每个客户端都有自己的RabbitMQ实例,并且我有一个具有自己的RabbitMQ实例的应用程序(我们称其为appA),这三个客户端应用程序(app1,app2,app3)希望在其上使用服务appA. appA上的服务需要RPC通信,app1,app2和app3分别具有一个booking.request队列和一个booking.response队列. 使用铲子插件,我可以 ..
发布时间:2020-06-14 19:17:58 其他开发

具有预取功能的Spring AMQP单一消费者并行处理

我们有一个项目正在使用Spring-AMQP来消耗来自RabbitMQ代理的消息.我们希望增加使用方的并发性,以便多个工作线程可以并行处理消息.我首先阅读了本机RabbitMQ客户端的文档,这使我想到了使用单个使用者的设计,并且预取计数> 1以控制并行性.直接使用RabbitMQ客户端,这似乎很自然. DefaultConsumer的handleDelivery方法可以产生一个新的Runnable ..
发布时间:2020-05-13 23:32:34 其他开发

重试兔子消息时记录消息

我们在应用程序中使用RabbitMQ将付款请求排队,并让另一个队列将结果发送回调用方.在这两种情况下,客户端都请求了将重试的重试策略,但是该策略将永久重试,但是会在每次重试中在日志中放置一些内容,例如“第x次重试事务...",以便外部系统可以通过监视来检测备份的内容日志文件. 我正在这样创建侦听器容器: public SimpleMessageListenerContainer pay ..
发布时间:2020-05-03 08:40:14 其他开发

如何在Spring-AMQP中使用Jackson2JsonMessageConverter处理内容类型为null

如果不是一个问题,则o.s.a.s.c.Jackson2JsonMessageConverter : Could not convert incoming message with content-type [null], 'json' keyword missing. 像以前一样,此消息看起来很清晰.哎呀,事情甚至可以在独立的测试环境中运行,但是,当在独立的服务器上运行时,代码似乎采用了不 ..
发布时间:2020-04-26 13:01:04 Java开发

Spring-AMQP重新排队消息计数基于JVM吗?

我正在寻找rabbitmq文档,似乎rabbitmq没有处理消息重新传递计数。如果我要手动ACK / NACK消息,我需要将重试计数保留在内存中(例如,通过使用correlationId作为映射中的唯一键),或者通过在消息中设置我自己的标头,并重新传送它(因此将它放在队列的末尾) 但是,这是一个spring处理的情况。具体来说,我指的是RetryInterceptorBuilder.stat ..
发布时间:2019-01-02 21:39:27 Java开发

Spring AMQP - 使用死信机制和TTL重新排队消息

它像“休斯顿我们在这里遇到问题”,我需要在首次尝试处理事件失败后安排/延迟消息5分钟。 我已经在这种情况下实现了死信交换。 失败的消息,路由到DLX - >重试队列并在之后返回工作队列另一次尝试的TTL为5分钟。 以下是我使用的配置: public class RabbitMQConfig { @Bean(name =“work”) @Primary Queue wo ..
发布时间:2019-01-02 10:58:42 Java开发