- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用特定模式的队列名称,例如 project.{queue-name}.queue
.为了保持这种模式稳固,我编写了一个辅助类来从一个简单的标识符生成这个名称。所以,foo
将生成一个名为 project.foo.queue
的队列.简单的。
但是,注释RabbitListener
需要一个常量字符串,并使用我的助手类给我一个错误。我如何使用 RabbitListener
实现这一点(或者可能是另一种方法)注解?
@Component
public class FooListener {
// it doesn't work
@RabbitListener(queues = QueueName.for("foo"))
// it works
@RabbitListener(queues = "project.foo.queue")
void receive(final FooMessage message) {
// ...
}
}
最佳答案
要创建和监听从动态 UUID 构造的队列名称,您可以使用 random.uuid .
问题是这必须只在一个地方被捕获到一个 Java 变量中,因为 a new random value would be generated each time the property is referenced .
解决方法是使用Spring Expression Language (SpEL)调用提供配置值的函数,例如:
@RabbitListener(queues = "#{configureAMQP.getControlQueueName()}")
void receive(final FooMessage message) {
// ...
}
@Configuration
public class ConfigureAMQP {
@Value("${controlQueuePrefix}-${random.uuid}")
private String controlQueueName;
public String getControlQueueName() {
return controlQueueName;
}
@Bean
public Queue controlQueue() {
System.out.println("controlQueue(): controlQueueName=" + controlQueueName);
return new Queue(controlQueueName, true, true, true);
}
}
@Configuration
隐式创建的。类(拼写略有变化
ConfigureAMQP
->
configureAMQP
)。
关于java - RabbitListener 注释上的动态队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49909859/
我想知道在 Spring AMQP 中是否可以根据负载类型从多个类中的同一队列接收消息。 我知道在类中使用@RabbitListener 注释,然后将@RabbitHandler 放在方法上,但我想在
我正在使用@RabbitListner 注释从 RabbitMq 队列接收消息。 虽然我已经完成了执行此操作所需的所有步骤(即在我的配置类中添加 @EnableRabbit 注释)并将 SimpleR
我需要为每个登录到应用程序的用户创建一个链接到 Direct Exchange 的队列。地下室路由将是'user_' + userId。 也就是说,每次我通过用户管理队列收到用户登录的消息时。实例化一
我们在 Spring boot 应用程序中实现了rabbitMq。这就是我们定义监听器的方式。但是每当我们启动应用程序并且队列中有消息时,这些消息的消耗就会在应用程序完全启动之前开始。 @Compon
我想使用特定模式的队列名称,例如 project.{queue-name}.queue .为了保持这种模式稳固,我编写了一个辅助类来从一个简单的标识符生成这个名称。所以,foo将生成一个名为 proj
我有一个基本的 Spring Boot Web 项目,并且正在使用 Spring Tool Suite。我正在尝试使用 RabbitMQ 实现基本消息传递,但无法导入 RabbitListener 注
使用以下构造(最新版本的 Spring)时的行为是什么。我无法在文档中找到它。 @RabbitListener(queues = {"q1", "q2", "q3"}) public class My
我们的配置是:1...n 个具有共享数据库的消息接收器。消息应该只被处理一次。 @RabbitListener(bindings = @QueueBinding( val
可以使用逗号分隔的属性来定义要监听的队列吗?目的是能够在不更改代码的情况下更改队列名称和队列数量。 我在 application.properties 中定义了队列像这样: my.aggregate.
在运行时构建它的最简单方法是什么? @RabbitListener(bindings = @QueueBinding( value = @Queue(value = "providedAtRu
如何在消息(@RabbitListener)中创建有状态服务(几个@Autowire),如果是新消息,状态应该是干净的。在 @Service 的 RabbitQM(Spring AMQP) 之前,我使
当我使用 MessageListenerAdapter 处理消息时,我可以调用 SimpleMessageListenerContainer.stop() 来停止从队列中消费。但是我改用@Rabbit
在我的接收器处理了特定数量的消息后,我需要停止 Rabbit 监听器并调用一个方法,然后再次启用监听器。 @RabbitListener(...) public void sink(Message m
有没有办法优雅地停止ListenerContainer及其关联的Consumers。 我想要实现的目标。 停止消费消息。 优雅地停止ListenerContainer。 等待长时间运行的消费者,并在完
我知道可以制作 SimpleMessageListenerContainer bean 并在此处设置预取计数和消息监听器,如下所示: @Bean public SimpleMessageListene
我的问题实际上是一个后续问题 RabbitMQ Integration Test and Threading 在那里它声明包装“你的听众”并传入一个 CountDownLatch ,最终所有线程都将合
我正在 Spring-Boot 版本 1.5.4 上使用 Spring-Boot 项目,带有 spring-boot-starter-amqp , spring-boot-starter-web-se
因此,我们在 spring-amqp 中使用漂亮的 @RabbitHandler 注释来创建类似于 RestControllers 编码风格但在幕后与 Rabbit 一起使用的端点。这一切都非常漂亮和
我有一个发布事件 E1 的类 A。 E1 由使用 @RabbitListener 注释的同一应用程序中的类 B 使用。 B 做一些事情然后发布事件 E2 被 C 等消费(形成一个流程链)。 我想做的是
我设置了一个SimpleRoutingConnectionFactory,例如: @Bean @Primary public SimpleRoutingConnectionFactory routin
我是一名优秀的程序员,十分优秀!