Only one ConfirmCallback is supported by each RabbitTemplate 如何解决
时间: 2023-10-17 10:31:24 浏览: 30
这个问题通常是因为在同一个RabbitTemplate对象上注册了多个ConfirmCallback回调函数所导致的。
解决的方法是在注册新的ConfirmCallback之前,先将之前的ConfirmCallback移除掉,可以使用removeConfirmCallback方法来实现,示例如下:
```
rabbitTemplate.removeConfirmCallback(oldConfirmCallback);
rabbitTemplate.setConfirmCallback(newConfirmCallback);
```
这样就能解决这个问题了。
相关问题
java.lang.IllegalStateException: Only one ReturnCallback is supported by each RabbitTemplate
这个错误通常是因为 RabbitTemplate 在设置 ReturnCallback 时,已经存在另一个 ReturnCallback。解决方法是在设置 ReturnCallback 之前,先移除已经存在的 ReturnCallback。可以使用 RabbitTemplate 的 `setReturnCallback` 方法来设置 ReturnCallback,使用 `getReturnCallback` 方法来获取已经存在的 ReturnCallback,使用 `setReturnCallback(null)` 方法来移除已经存在的 ReturnCallback。例如:
```java
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
ReturnCallback existingCallback = rabbitTemplate.getReturnCallback();
if (existingCallback != null) {
rabbitTemplate.setReturnCallback(null);
}
rabbitTemplate.setReturnCallback(new MyReturnCallback());
```
ProceedingJoinPoint is only supported for around advice
ProceedingJoinPoint is only supported for around advice是指在AOP中,ProceedingJoinPoint只能在环绕通知(around advice)中使用。这是因为ProceedingJoinPoint提供了一种在目标方法执行前后插入额外逻辑的方式,而其他类型的通知(如前置通知、后置通知、返回通知)并不支持ProceedingJoinPoint。所以如果要在AOP中使用ProceedingJoinPoint,需要使用环绕通知来包裹目标方法,并在环绕通知中调用ProceedingJoinPoint的proceed()方法来执行目标方法。这样可以在目标方法执行前后执行额外的逻辑。如果在其他类型的通知中使用ProceedingJoinPoint,会抛出IllegalArgumentException异常。所以如果你想在AOP中使用ProceedingJoinPoint,需要将通知类型设为around advice。