RabbitMQ - 如何覆盖sendAndReceive的replyTimeout?

时间:2017-09-07 10:12:21

标签: rabbitmq amqp spring-amqp

我正在使用spring amqp定义配置amqp模板,如

<rabbit:template id="amqpTemplate" connection-factory="connectionFactory" reply-timeout="45000" />

现在,在调用amqpTemplate.sendAndReceive("COR.QUEUE", message)时,我可以更改特定请求的replyTimeout吗?

1 个答案:

答案 0 :(得分:3)

您无法更改单个发送操作的超时;它是一个恒定的值。

如果您只需要几个不同的值,则可以简单地声明多个模板,每个模板具有不同的超时。

您还可以创建一个包装类,按需创建多个模板,每个请求超时一个。

private final Map<Long, RabbitTemplate> templates = new HashMap<>();

public Message sendAndReceive(String rk, Message message, long timeout) {
    // lookup a template for the requested timeout, or add one to the map
    return lookedupTemplate.sendAndReceive(rk, message);
}